在MVC3中,view应该如何向Controller传递一个对象
下面是我写的展示页面
@foreach(var item in Model)
{
<tr>
<td> @item.ID</td>
<td> @item.Title</td>
<td> @String.Format("{0:g}", item.ShowTime)</td>
<td> @item.Director</td>
<td> <span ;>¥</span>@String.Format("{0:F}", item.Price) </td>
<td>
@Html.ActionLink("Edit", "EditMovie", new { id = item.ID }) |
@Html.ActionLink("Details", "DetailsMovie", new { id = item.ID }) |
@Html.ActionLink("Delete", "DeleteMovie", new { id = item.ID })
</td>
</tr>
}
补充:我是用entityFramework来保存数据的。
解释:
Edit是修改,但我点击修改时,要把该对象传递到控制器,请问我应该怎么做。
请教大虾帮帮忙啊。谢谢!
@using (Html.BeginForm("Create", "UserDetails", FormMethod.Post))
{
SelectList problems = ViewData["problems"] as SelectList;
SelectList Companys = ViewData["Companys"] as SelectList;
<table>
<tr><td>用戶帳號</td><td>@Html.TextBoxFor(m => m.UserID) @Html.ValidationMessageFor(model => model.UserID)</td>
<td>用戶姓名</td><td>@Html.TextBoxFor(m => m.UserName) @Html.ValidationMessageFor(model => model.UserName)</td></tr>
<tr><td>用戶密碼</td><td>@Html.TextBoxFor(m => m.Passwd) @Html.ValidationMessageFor(model => model.Passwd)</td>
<td>郵箱地址</td><td>@Html.TextBoxFor(m => m.Email) @Html.ValidationMessageFor(model => model.Email)</td></tr>
<tr><td>所屬公司</td><td>@Html.DropDownList("Company", Companys)</td>
<td>所屬部門</td><td><select id="Depts" name="Depts"/></td></tr>
<tr><td>用戶類型</td><td>
@foreach (var item in problems)
{
@Html.RadioButton("UserType", item.Value, item.Value=="01")@item.Text
}
</td>
<td>電話</td><td>@Html.TextBoxFor(m => m.Tel) @Html.ValidationMessageFor(model => model.Tel)</td></tr>
<tr><td>備註</td><td colspan="3">@Html.TextArea("Memo") </td></tr>
<tr id="bottomTr"><td colspan="4"><input type="submit" value="保存"/></td></tr>
</table>
@using (Html.BeginForm("Create", "UserDetails", FormMethod.Post))
就是 一個提交的請求:需要指定 collection 和 action
一、直接用Form表单提交,表单元素的name值对应controller方法中的参数名
二、用ajax发送POST请求
这个清楚,但就是不知道如何去写,麻烦可不可以给一个Demo。因为我是在显示数据页面的那一行后面带一个修改的超链接,然后把这个对象传递到控制器的。
<div id="IndexonwerDiv">
@using (Ajax.BeginForm("Index(指向的controller)", null, new AjaxOptions { UpdateTargetId = "IndexonwerDiv(层ID)" }, new { id = "IndexForm(自定义)" }))
{
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td >
用户:
</td>
</tr>
<tr>
<td>
@Html.LS_Grid(Model.EntityList, Model.ListColumns, Model.Searcher)
</td>
</tr>
</table>
@Html.HiddenFor(x => Model.display, new { id = "hid_display" })
}
</div>
麻烦能不能描述一下。
如果你使用的是Razor引擎,那么,View中的
@model MvcApplication.Models.User
就指定了页面操作的类对象。而为该对象的属性赋值,则是通过类似于
@Html.EditorFor(model => model.UserName)
这句代码在客户端生成一个type为text的input标签,用以获取User.UserName所需要的内容,提交时赋值。
但如果我的Model里包含其他集合对象,也要传递过去,却得不到值,请问有办法吗?