在提交表单</li> </ul>期间无法访问<ul>和<li>

时间:2013-07-12 09:13:54

标签: asp.net-mvc-3 jquery-mobile

我有控制器查看。我想知道是否可以访问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");
    }

感谢

2 个答案:

答案 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>

当您发布时,这些项目仍然应该在列表中。

它可能不是一个完美的解决方案,但它可以指导您走上正确的轨道。

我希望这会有所帮助。