我有一个用模型调用的MVC3局部视图。
@model SomeModel
该模型具有Id参数。
在视图中,我呼叫@Html.Action("SomeMethod", "SomeController")
有没有办法访问SomeMethod ActionResult中的Id参数而不像这样明确地传递它:
@Html.Action("SomeMethod", "SomeController", new {"Id" = Model.Id})
问题是我无法更改局部视图的源代码。我需要Id值。 Id未在部分视图中使用,因此我无法通过JavaScript访问它。 模型是否传递给HttpContext并且有什么方法可以传递它吗?
编辑:问题是我正在为nopCommerce开发一个插件,就像nop-templates提供的插件一样。 nopCommerce是一个开源软件,我可以更改代码,但插件将单独发货,因此不建议在nopCommerce视图中进行更改,而我所指的视图是这样的
答案 0 :(得分:2)
如果无法更改局部视图的源代码,则无法获取控制器中的id值。它完全解耦为MVC模式的一个主要观点。
您必须明确地将其作为参数传递给您的操作。
一个肮脏的解决方法可能是将该ID存储在Session
。
答案 1 :(得分:1)
在我的项目中,我按国家/地区ID填写我的状态下拉列表
在我看来
我将国家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>
在我的控制器中我有动作
public JsonResult State(int countryId)
{
var stateList = CityRepository.GetList(countryId);
return Json(stateList, JsonRequestBehavior.AllowGet);
}
我认为这会对你有帮助....