作为背景,我使用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想要知道用户选择哪个类别来相应地更新类别。 提前感谢任何帮助。
答案 0 :(得分:0)
我会考虑重新考虑设计并在此处取消使用局部视图。
您可以在局部视图中使用隐藏的输入字段,并从javascript中获取它们。
例如:_PartialView.cshtml
<input type="hidden" id="someDataFromPartialSomehow" value="5" />
在你看来
<script>
$(document).ready(function(){
var someDataFromPartialSomehow = $("#someDataFromPartialSomehow").val();
});
</script>
来自Haritha的例子