1
我是jquery和ajax的新手 - 看起來似乎無法使其工作!見我相關的問題:Use Json and AjaxLink to Toggle Link Values in ASP.NET MVC 2
這裏是我的jQuery:
$(function() {
$("div[id^=add]").click(function (ev) {
ev.preventDefault();
updateMe(this.id.split('_')[1], "AddRequirement");
});
$("div[id^=remove]").click(function (ev) {
ev.preventDefault();
updateMe(this.id.split('_')[1], "RemoveRequirement");
});
});
function updateMe(myId, myAction) {
$.ajax({
type: "POST",
url: "AgreementType.aspx/" + myAction,
data: 'aId=' + <%:Model.AgreementType.Id%> + '&rId=' + myId,
dataType: "text",
error: function(request, msg){
alert("Error upon saving request: " + msg);
},
success: function (data) {
alert(data);
}
});
}
目前我有兩個不同的div。一個foreach循環確定要顯示哪一個:
<%if(req.Agreements.Any(r => r.AgreementTypeId == Model.AgreementType.AgreementTypeId))
{%>
<div id="<%:string.Format("remove_{0}", req.Id)%>" class="divLink">Remove</div>
<% }
else
{ %>
<div id="<%:string.Format("add_{0}", req.Id)%>" class="divLink">Add</div>
<%{%>
這是我的控制器操作。很簡單:
public JsonResult AddRequirement(string aId, string rId)
{
string result = "Remove";
//Code to add requirement
return this.Json(result);
}
public JsonResult RemoveRequirement(string aID, string rID)
{
string result = "Add";
//Code to remove requirement
return this.Json(result);
}
}
所有的成功函數都需要這樣做,用目錄更新目標的innerHtml,並更改id以匹配。看起來很簡單!但我似乎無法弄清楚。 TIA
我寧願只返回一個簡單的文本字符串,whic h是爲什麼控制器是JsonResult,而$ ajax數據類型是「text」;用於僅返回一個字符串對象的控制器。我一直在調整這段代碼一段時間...... – morganpdx 2010-12-17 20:51:07
Thia行def看起來不正確:url:「AgreementType.aspx /」+ myAction你可以從你的global.asax發佈你的路由數據嗎?我是100%你需要從該行刪除.aspx。 – Paul 2010-12-18 05:55:23
不,沒錯。我必須在路由中添加.aspx,以便MVC可以在IIS 6上運行:routes.MapRoute( 「Default」,// Route name 「{controller} .aspx/{action}/{id}」,//具有參數的網址 新{controller =「Home」,action =「Index」,id = UrlParameter.Optional} //參數默認值 ); – morganpdx 2010-12-20 17:30:49