我有控制器查看。我想知道是否可以访问ul和li?我不想做ajax调用并将这些元素作为参数传递。 Li元素动态地添加到客户端。 this.Request.Form只显示'name'变量而没有'list'。有什么建议吗?
<form action="@Url.Action("Filter")" method="POST">
<ul data-role="listview" data-inset="true" data-filter="false" name="list">
@foreach (var item in @Model.Items)
{
<li value="@item">@item</li>
}
</ul>
<input type="text" name="name"/>
<inpu type="submit" value="Filter"/>
</form>
和控制器:
[HttpPost]
public ActionResult Filter(string name, List<string> list)
{
// working with list
return RedirectToAction("Index");
}
感谢
答案 0 :(得分:1)
没有
在回发后无法访问<ul>
和<li>
。
BTW,以下代码在服务器上不在客户端上生成<li>
@foreach (var item in @Model.Items)
{
<li value="@item">@item</li>
}
如果您希望访问服务器上的项目(@item
),还有其他方法可以获取不需要访问<ul>
或<li>
例如,您可以在循环中的每个@Html.HiddenFor
中发出隐藏的(<li>
)元素。
答案 1 :(得分:0)
您可以尝试以下操作。
我不确定你的视图模型是什么样的,但它看起来像一个字符串值列表?那么它在你的视图模型中会是这样的:
public class YourViewModel
{
public List<string> Items { get; set; }
}
在您的视图中尝试以下操作:
<ul>
@for (int i = 0; i < Model.Items.Count(); i++)
{
<li>
@Html.DisplayFor(x => x.Items[i])
@Html.HiddenFor(x => x.Items[i])
</li>
}
</ul>
当您发布时,这些项目仍然应该在列表中。
它可能不是一个完美的解决方案,但它可以指导您走上正确的轨道。
我希望这会有所帮助。