我想做像
这样的事情$.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属性?
答案 0 :(得分:0)
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,但包括模型(以及任何包含模型)前缀作为要查找值的元素的名称。
答案 1 :(得分:0)
是的,如果您遵循java脚本的模型模式,则可以执行此操作。 这是你的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>