我需要得到的字符串數組或列表使用Ajax和行動,這是我的執行情況:使用Ajax和JsonResult在ASP.NET MVC 3
這是視圖索引行動我HTML DOM中AccessMenuController:
<div class="RoleAccess">
<select name="RoleDropDown">
<option value="0">Select Role</option>
<option value="61AD3FD9-C080-4BB1-8012-2A25309B0AAF">AdminRole</option>
<option value="8A330699-57E1-4FDB-8C8E-99FFDE299AC5">Role2</option>
<option value="004E39C2-4FFC-4353-A06E-30AC887619EF">Role3</option>
</select>
</div>
我的控制器:
namespace MyProject.Areas.GlobalAccess.Controllers {
public class AccessMenuController : Controller {
public ActionResult Index() { return View();}
[HttpPost]
public JsonResult RoleDropDownChanged(string roleId) {
Guid RoleId = new Guid(roleId);
//Some implement
List<string> actions = new List<string>();
for(int i = 0; i <= 10; i++)
actions.Add(i.ToString());
return Json(actions.ToArray(), JsonRequestBehavior.AllowGet);
}
}
}
和腳本:
$(document).ready(function() {
//Handle Checks of Actions by RoleName Changed
$('div.RoleAccess select').change(function() {
RoleChangeHandler();
});
function RoleChangeHandler() {
$.ajax({
url: '@Url.Action("RoleDropDownChanged")',
type: 'POST',
data: { 'roleId': '61AD3FD9-C080-4BB1-8012-2A25309B0AAF' },
dataType: 'json',
processData: false,
contentType: 'application/json; charset=utf-8',
success: function (data) { SuccessRoleChangeHandler(data); },
error: OnFailRoleChangeHandler
});
return false;
}
function SuccessRoleChangeHandler(data) {
alert("in success role change");
}
function OnFailRoleChangeHandler(result) {
alert('in OnFailRoleChangeHandler');
}
而問題是所有更改下拉只是Onfail
函數運行並警惕我「在OnFailRoleChangeHandler」,我也檢查RoleDropDownChanged
行動與斷點,永遠不會運行,問題在哪裏?
UPDATE
,當我通過Chrome瀏覽器加載頁面有控制檯窗口中的錯誤: http://MyProject/GlobalAccess/AccessMenu/@Url.Action(%22RoleDropDownChanged%22) 404 (Not Found) jquery-1.7.1.js:8102
當您調試時,您的服務器方法是否會引發異常?你有沒有嘗試調試JavaScript代碼? – Kosta 2012-03-29 08:35:09
如果您擁有這個'@ Url.Action(%22RoleDropDownChanged%22)',那麼您的腳本不會被Razor Engine解析。如果你可以的話,你可以把腳本放在剃刀視圖裏,而不是放在一個單獨的.js文件中。 – Silvermind 2012-03-29 08:42:42
@Kosta I更新問題 – Saeid 2012-03-29 08:43:07