这无疑是一个新手问题,但我找不到一个类似的问题。我想通过JS函数将模型传递给动作。我有Ajax脚本:
var modelDataJSON = '@Html.Raw(Json.Encode(Model))';
$.ajax({
url: '@Url.Action("Action1", "Home")',
type: 'POST',
data: modelDataJSON,
dataType: 'json'
});
我有动作:
public ActionResult Action1(MyModel modelDataJSON)
{
return Content(modelDataJSON.ToString());
}
它没有做任何事情。我错过了什么?再次,抱歉新手问题,但我已经被困了太久了。
答案 0 :(得分:0)
也许存在误解。我要问的是如何使用JS脚本重定向到Action1 URL。如果它运行,那么它将显示内容,因为它是一个内容动作。
如果要加载新页面,请不要使用Ajax。
要发出POST请求,您需要提交表单。
解决此问题的最佳方法是使用普通的常规HTML表单,而不是涉及JS。
如果您真的想要涉及JS,那么您可以生成表单。
var f = document.createElement("form");
f.action = myURL;
f.method = "POST";
// append inputs to the form to pass the data in modelDataJSON here
document.body.appendChild(f);
f.submit();
请注意,您无法以这种方式发送JSON有效内容(但尽管变量名称为modelDataJSON
,但您的Ajax仍然会发送标准格式编码数据。)