我正在尝试使用 Ajax.BeginForm 功能。
表单已正确发布,但我需要从控制器操作中检索 json 格式的数据,并使用操作结果消息刷新div 。
我在 Stackoverflow 中找到了一些建议,但没有一个有用。
这是找到的建议:
var data = content.get_response().get_object();
但这对我不起作用。而且我相信今天已弃用,仅适用于 MVC 2 及更低版本。我当前的MVC版本是3。
这是一段代码:
<script type="text/javascript">
function fnCompleted(data){
if(data.Success)
$("#somediv").html(data.StatusMessage).addClass("success");
else
$("#somediv").html(data.StatusMessage).addClass("error");
}
</script>
@{
var ajaxOptions= new AjaxOptions{
OnComplete= "fnCompleted",
Url= '@Url.Action("myAction", "myController")',
Method= "POST"
}
<div id="somediv">/*Here goes the json response*/</div>
using(Ajax.BeginForm(ajaxOptions)){
@Html.EditorForModel()
<input type="submit" name="send" value="Send">
}
这是我的控制器操作的一部分:
[HttpPost]
public JsonResult myAction(MyModel mymodel)
{
try
{
if (myModel== null)
throw new Exception("The model is empty");
if (!ModelState.IsValid)
throw new Exception("The model is wrong");
var found = /*Look for existence of the model in the database*/;
if(found)
throw new Exception("Already exists the object");
/*Operation with the database*/
var result = Json(
new
{
Success = true,//success
StatusMessage = "Object created successfully"
});
return result;
}
catch (Exception exception)
{
var result = Json(
new
{
Success = false,//error
StatusMessage = exception.Message
});
return result;
}
}