1

我有控制器的视图。我想知道是否可以访问 ul 和 li?我不想进行 ajax 调用并将这些元素作为参数传递。Li 元素是在客户端动态添加的。this.Request.Form 只显示没有“列表”的“名称”变量。有什么建议吗?

<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");
    }

谢谢

4

2 回答 2

1

不,

无法访问<ul><li>回发。

顺便说一句,以下代码是<li>在服务器上而不是在客户端上生成的

 @foreach (var item in @Model.Items)
    {
        <li value="@item">@item</li>   
    }

如果您希望访问@item服务器上的项目 ( ),还有其他方法可以获取那些不需要访问<ul><li>

例如,您可以在循环@Html.HiddenFor中的 each 中发出一个隐藏的 ( ) 元素。<li>

于 2013-07-12T09:19:27.880 回答
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>

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

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

我希望这有帮助。

于 2013-07-12T09:47:21.273 回答