Asp.net mvc 3 在控制器中从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值。该

我有一个MVC3局部视图,它被模型调用

@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元素中,并以不引人注目的方式进行访问。