Day*_*yan 4 ajax asp.net-mvc jquery json asp.net-ajax
我正在尝试使用以下代码对我的MVC模型进行编码,但警报消息为我提供了一个空值.我不确定它为什么给我一个空值,因为这是一个创建表单.我正在尝试从这个创建一个模型,我的HTML代码具有以下外观:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Customer</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" id="submit" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
<script type="text/javascript">
$(document).ready(function () {
$('#submit').click(function () {
var JsonModel = '@Html.Raw(Json.Encode(@Model))';
alert(JsonModel); // json as string
var model = JSON.parse(JsonModel); // will give json
alert(model);
$.ajax({
type: "POST",
url: "../Home/Index",
data: {"cus" : model},
success: function(data){
alert("done");
},
error:function(){
alert("Error!!!!");
}
});
});
});
</script>
}
Run Code Online (Sandbox Code Playgroud)
它返回null,因为它为 null.用户最终将进入表单的数据在页面呈现时(以及您对Json.Encode(Model)运行的调用)不可用.像JavaScript这样的东西运行在客户端,而所有Razor的东西在发送到客户端之前都在服务器端运行.如果你想从表单中获取用户输入的数据以便在你的AJAX调用中使用,那么你需要像@Sippy一样建议并通过JavaScript检索它:
$('form').serializeObject();
Run Code Online (Sandbox Code Playgroud)
此外,如果您确实需要在渲染时对模型进行实际编码(可能与Knockout一样使用),则不需要将其设置为字符串然后解析字符串.只需将其设置为常规JavaScript对象即可.无论如何,这都是JSON:
var model = @Html.Raw(Json.Encode(Model));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32483 次 |
| 最近记录: |