如何从视图中选择和传递数据

时间:2009-10-21 10:02:33

标签: asp.net-mvc

我开始在ASP.NET中开发,我找不到任何一个非常简单的用例示例: 我在视图上显示了一些模型对象。 我添加了一个复选框,以便用户可以选择他/她想要看到的那个。 然后,用户点击链接,他/她应该看到他/她选择的模型对象在另一个视图中显示。

1)获取所选项目列表的最佳方法是什么? 目前我用IsSelected属性修饰了我的模型,因为这是我在ViewModel中所做的,但这可能不是正确答案。

2)如何将选定的数据传递给下一个控制器? 在我看到的所有示例中,数据在链接中是“硬编码的”并且是每个对象。 我没有在ASP MVC站点的任何样本中看到任何用户选择的示例。

编辑:恐怕不是那么清楚。我得到的是:

<table style="width: 100%;">
    <% foreach (Vehicle vehicle in Model)
       { %>
    <tr>
       <td>
           <% 'Here be bound checkbox' %>
        </td>
        <td>
            <%= Html.ActionLink("Show", "Index", "Map", vehicle.Name, null) %>
        </td>
        <td >
            <%= Html.Encode(vehicle.Name)  %>
        </td>
        <td >
            <%= Html.Encode(vehicle.LastPositionReceived) %>
        </td>
        <td >
            <%= Html.Encode(vehicle.Status) %>
        </td>
        <td >
            <%= Html.Encode(vehicle.LocationDescription) %>
        </td>
    </tr>
    <% } %>
</table>

点击Show链接,我就可以显示 SINGLE 项目详情。

现在我想将复选框绑定到我的模型的属性,以便我可以触发一个操作(带有链接或按钮),以便只发送 SELECTED 项到控制器。 这是我没有看到任何关于这个例子的部分。

我可以添加

<% TempData.Add("Vehicles", Model); %>
在某个地方,然后车辆将传递给控制器​​,但我仍然需要一种方法将IsSelected属性绑定到模型(我不想挂钩Checked事件并做手动)。

我希望这会让事情变得更加清晰。

(感谢BTW的快速回复;))

1 个答案:

答案 0 :(得分:0)

老实说,你没有给我们提供太多信息来给出正确的答案。但这是一个简单的例子,说明如何完成我认为你所描述的内容。

假设这是您在视图中向用户列出选择的部分:

<%foreach (YourModel m in (List<YourModel>)ViewData["ModelsToList"]) {%>
 <p>
   <input name="selection" type="radio" value="<%=m.ID%>" id="model-<%=m.ID%>" />
   <label for="model-<%=m.ID%>"><%=m.Name%></label>
 </p>
<%}%>

然后将该表单发布到这样的控制器操作:

public ActionResult ShowSelectedModel(int selection) {
    YourModel selectedModel = yourModelRepository.getModel(selection);
    return View(selectedModel);
}

然后在ShowSelectedModel视图中,您可以显示用户的选择。

那是你的想法吗?