如何从父视图/控制器访问asp.net控件的信息

时间:2016-08-11 00:51:46

标签: asp.net-mvc-4

作为背景,我使用MVC在c#中编码。我有一个局部视图(称为CategorySelection),它只显示通过其模型接收的所有类别的列表。

@using MyProject.Models;
@model CategorySelectionModel

@using (Html.BeginForm())
{
    <select id="CategoryNamesList" size="6">

        @if(Model.Categories.Count() == 0)
        {
            <option>No Categories defined.</option>
            <option>Please define a category first.</option>
        }
        else
        {
            foreach (Category c in Model.Categories)
            {
                if (c.Id == Model.SelectedCategoryId)
                {
                    <option selected="selected">@c.Name</option>
                }
                else
                {
                    <option>@c.Name</option>
                }
            }
        }
    </select>
}

然后我将这个局部视图包含在一个名为EditItems的父视图中(每个项目都有一个类别,通过局部视图显示/选择)

<div class="form-group">
                <div>@Html.LabelFor(mode => Model.Category)</div>
                @Html.Partial("CategorySelection", new CategorySelectionModel { Categories = new dbContext().Categories, SelectedCategoryId = Model.Category.Id })
</div>

到目前为止一切顺利。代码从局部视图内的列表中选择正确的类别。但问题是,当用户点击一个新类别时,我不知道如何从partialview获取CategoryId的新值(来自CategoryNamesList的项目)(如在EditItem视图中的名称所示,I想要知道用户选择哪个类别来相应地更新类别。 提前感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我会考虑重新考虑设计并在此处取消使用局部视图。

您可以在局部视图中使用隐藏的输入字段,并从javascript中获取它们。

例如:_PartialView.cshtml

<input type="hidden" id="someDataFromPartialSomehow" value="5" />

在你看来

<script>
$(document).ready(function(){
   var someDataFromPartialSomehow = $("#someDataFromPartialSomehow").val();
});
</script>
来自Haritha的例子