首页 新闻 会员 周边

如何传递对象

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-25 12:50

在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是修改,但我点击修改时,要把该对象传递到控制器,请问我应该怎么做。
请教大虾帮帮忙啊。谢谢!

程旭媛的主页 程旭媛 | 初学一级 | 园豆:79
提问于:2012-03-26 13:24
< >
分享
最佳答案
0
@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

收获园豆:10
無限遐想 | 老鸟四级 |园豆:3740 | 2012-03-26 13:48
其他回答(3)
0

一、直接用Form表单提交,表单元素的name值对应controller方法中的参数名

二、用ajax发送POST请求

artwl | 园豆:16736 (专家六级) | 2012-03-26 13:36

这个清楚,但就是不知道如何去写,麻烦可不可以给一个Demo。因为我是在显示数据页面的那一行后面带一个修改的超链接,然后把这个对象传递到控制器的。

支持(0) 反对(0) 程旭媛 | 园豆:79 (初学一级) | 2012-03-26 13:40
0

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

Catherine# | 园豆:202 (菜鸟二级) | 2012-03-27 14:20

麻烦能不能描述一下。

支持(0) 反对(0) 程旭媛 | 园豆:79 (初学一级) | 2012-03-27 15:43
0

如果你使用的是Razor引擎,那么,View中的

@model MvcApplication.Models.User

就指定了页面操作的类对象。而为该对象的属性赋值,则是通过类似于

@Html.EditorFor(model => model.UserName)

这句代码在客户端生成一个type为text的input标签,用以获取User.UserName所需要的内容,提交时赋值。

飞扬的尘埃 | 园豆:1318 (小虾三级) | 2012-03-29 17:27

但如果我的Model里包含其他集合对象,也要传递过去,却得不到值,请问有办法吗?

支持(0) 反对(0) Elaine_Li | 园豆:161 (初学一级) | 2012-11-06 19:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册