具有模型属性的AJAX帖子
本文关键字:AJAX 帖子 属性 模型 | 更新日期: 2023-09-27 18:29:20
我想做一些类似的事情
$.ajax({
url: '/Home/AjaxTest',
data: {
id: @Model.Prop
},
type: 'post',
cache: false,
success: function (response) {
console.log(response);
}
...
然而,它没有起作用。我知道如果我有一个隐藏的字段,比如
@Html.HiddenFor(model => model.Id)
然后我可以通过获得属性值
data: { id: $('input[name="Id"]').val() },
我还是很奇怪。是否有其他方法可以更直接地访问Model属性?
data: { id: "@Model.Prop" } // may or may not need quotes depending on data type.
如果执行此操作,它将是呈现页面时Model.Prop字段的值,因此不会反映对使用该属性的输入的任何修改。
如果您想要使用EditorFor等呈现的输入控件的实际数据:
data: { @(Model.Prop.GetType().Name): $('input[name="@(ViewData.TemplateInfo.HtmlFieldPrefix + "." + Model.Prop.GetType().Name)"]').val() }
这将使用属性名称作为json索引和相同的名称来呈现javascript,但包括模型(和任何包含模型)前缀作为要查找值的元素的名称。
是的,如果您遵循java脚本的Model模式,您可以这样做。这是您的java脚本文件。
var JSModel = (function(){
var model = {};
var init = function(){
//Perfome your operations
};
return {
init:init,
model :model //return beacuse we want to acccess it in cshtml
};
})();
$(document).ready(function() {
JSModel .init();
});
现在在cshtml中,您将执行以下操作://在此处插入JS文件,然后插入
<script>
JSModel.model = @Html.Raw(Json.Encode(Model)); // You will get the model in your js file. it will in JSON form
</script>