如何从控制器调用EditorFor
本文关键字:调用 EditorFor 控制器 | 更新日期: 2023-09-27 18:25:43
我有的位置列表
public class Location
{
public string LocationName { get; set; }
public string Address { get; set; }
}
我为这个类创建了编辑器模板
<div>
<span>@Html.TextBoxFor(a => a.LocationName)</span>
<span style="color: red;">@Html.TextBoxFor(a => a.Address )</span>
</div>
问题是,位置使用ajax加载到我的页面,然后我要将结果发送回服务器。但是如何获取具有特定索引的位置?我的意思是,对于第一个位置,它将生成如下:
<input type="text" name="Locations[0].LocationName" />
对于第二个位置,当我按下"添加位置"按钮时,它应该从服务器(从控制器的操作中以html字符串的形式)获得这个位置,但索引1不是0,因为它是下一个位置。
有可能实现吗?或者我做错了什么?
类似的东西
[HttpGet]
public virtual ActionResult LocationEditor(int index)
{
ViewData.TemplateInfo.HtmlFieldPrefix = string.Format("Locations[{0}]", index);
return PartialView(@"EditorTemplateExplicitPathAsOnlyViewNameAintGonnaWork.cshtml");
}
对于位置名称,容器
<div class="locations-container" data-item-count="@Model.Count">
@for (int j = 0; j < Model.Count; j++)
{
@Html.EditorFor(model => model[j])
}
<a href="#" class="add-location">Add Location</a>
</div>
在添加时增加数据项计数并用新索引调用LocationNameEditorLocationNameEditor
操作的javascript的其余部分就由您完成了。
您可以尝试使用局部视图并创建一个返回AjaxResult
的操作方法(我相信这是正确的)。然后,您可以让控制器填充视图模型,并将其传递给要在页面中指定位置呈现的部分视图。