Asp.net mvc 3 在控制器中从MVC3部分视图访问模型数据,而不在视图中显式传递模型数据
我有一个MVC3局部视图,它被模型调用Asp.net mvc 3 在控制器中从MVC3部分视图访问模型数据,而不在视图中显式传递模型数据,asp.net-mvc-3,view,model,controller,httprequest,Asp.net Mvc 3,View,Model,Controller,Httprequest,我有一个MVC3局部视图,它被模型调用 @model SomeModel 模型有一个Id参数 在视图中,我调用@Html.Action(“SomeMethod”、“SomeController”) 是否有任何方法可以访问SomeMethod ActionResult中的Id参数,而无需像下面这样显式传递它: @Html.Action("SomeMethod", "SomeController", new {"Id" = Model.Id}) 问题是我无法更改部分视图的源代码。我需要Id值。该
@model SomeModel
模型有一个Id参数
在视图中,我调用@Html.Action(“SomeMethod”、“SomeController”)
是否有任何方法可以访问SomeMethod ActionResult中的Id参数,而无需像下面这样显式传递它:
@Html.Action("SomeMethod", "SomeController", new {"Id" = Model.Id})
问题是我无法更改部分视图的源代码。我需要Id值。该Id未在部分视图中使用,因此我无法通过JavaScript访问它。
模型是否已传递到HttpContext,是否有任何方法可以传递它
编辑:问题是我正在为开发一个插件,就像。是一个开源软件,我可以更改代码,但插件将单独发布,因此不建议在视图中进行更改,我所指的视图就是这样。在我的项目中,我按国家id填写我的状态下拉列表,如下所示
<script type="text/javascript">
function cascadingdropdown() {
var countryID = $('#countryID').val();
$.ajax({
url: "@Url.Content("~/City/State")",
dataType: 'json',
data: { countryId: countryID },
success: function (data) {
alert(data);
$("#stateID").empty();
$("#stateID").append("<option value='0'>--Select State--</option>");
$.each(data, function (index, optiondata) {
alert(optiondata.StateName);
$("#stateID").append("<option value='" + optiondata.ID + "'>" + optiondata.StateName + "</option>");
});
},
error: function () {
alert('Faild To Retrieve states.');
}
});
}
</script>
在我看来
我像这样将国家id传递给我的控制器ActionResult
<script type="text/javascript">
function cascadingdropdown() {
var countryID = $('#countryID').val();
$.ajax({
url: "@Url.Content("~/City/State")",
dataType: 'json',
data: { countryId: countryID },
success: function (data) {
alert(data);
$("#stateID").empty();
$("#stateID").append("<option value='0'>--Select State--</option>");
$.each(data, function (index, optiondata) {
alert(optiondata.StateName);
$("#stateID").append("<option value='" + optiondata.ID + "'>" + optiondata.StateName + "</option>");
});
},
error: function () {
alert('Faild To Retrieve states.');
}
});
}
</script>
我认为这将帮助您……当您无法更改部分视图的源代码时,无法获取控制器中的id值。它是完全解耦的,因为这是MVC模式的一个要点。 您必须明确地将其作为参数传递给您的操作。
一个肮脏的解决方法可能是将该id存储在
会话的某个位置
,因为我在帖子中说,该id在局部视图中的任何位置都没有使用,并且我无法更改源代码,因此您的方法对我没有帮助。如果不是这样,这种方法是非常有用的。Id还可以作为属性添加到html元素中,并以不引人注目的方式进行访问。