2

我有一个用模型调用的 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视图中进行更改,我所指的视图就是这样。

4

2 回答 2

2

当您无法更改局部视图的源代码时,就无法获取控制器中的 id 值。它完全解耦,这是 MVC 模式的一个主要点。您必须明确地将其作为参数传递给您的操作。一个肮脏的解决方法可能是将该 id 存储在Session.

于 2012-11-01T12:33:49.107 回答
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);
}

我想这会对你有所帮助....

于 2012-11-01T12:24:36.727 回答