ViewData未回发给Controller

时间:2012-06-25 13:06:53

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

我有两个页面,一个用于编辑用户信息,另一个用于编辑图片表中的信息。由于每页所需的数据类型不同,我最近停止使用强类型视图模型。

编辑用户信息的页面工作正常,但编辑图片信息的页面不会回发在输入字段中进行的任何编辑;除了ID,这是正确的,所有其他值都返回为null。它们的结构看起来完全一样 - 我无法弄清楚它们之间的区别。据我所知,这两个页面的代码是相同的,但我没有在第二个页面上获取数据。

用户控制器和查看功能

控制器

public ActionResult Preferences()
{
    int userid = getUserID(User.Identity.Name);  

    // Info for user preferences
    var accountInfo = db.users.Single(l => l.ID == userid);  

    ViewData["accountInfo"] = accountInfo;

    AccountController usr = new AccountController(); // Info for user menu
    ViewData["userInfo"] = usr.getUserInfo(User.Identity.Name);

     return View();
}

[HttpPost]
public ActionResult Preferences(user accountInfo, string oldPW)
{
    // Do stuff to save user info
    return RedirectToAction(actionname, routeValues);
}

查看

@using (Html.BeginForm("Preferences", null, FormMethod.Post, 
                                            new { id = "prefsform" }))
{
AutoShowApp_MVC.user item = new AutoShowApp_MVC.user();
item = ViewBag.accountInfo;

<input id="lastname" name="lastname" type="text" value="@item.lastname"/>
<input id="address1" name="address1" type="text" value="@item.address1"/>
<input id="city" name="city" type="text" value="@item.city"/>
<input id="state" name="state" type="text" value="@item.state"/>
<input type="submit" value="Submit Changes"  />

}

图片控制器和查看哪些不起作用

控制器:

public ActionResult Edit(long id)
{
    var picInfo = db.lmit_pics.Single(l => l.ID == id);
    ViewData["picInfo"] = picInfo; // get Picture Info

    // Get User Info for menu
    AccountController usr = new AccountController(); 
    ViewData["userInfo"] = usr.getUserInfo(User.Identity.Name);

    return View();
}

[HttpPost]
public ActionResult Edit(lmit_pics picInfo)
{
    // Do stuff to save picInfo
    return RedirectToAction("Index");
}

查看:

@using (Html.BeginForm("Edit", null, FormMethod.Post, new { id = "editform" }))
{
    AutoShowApp_MVC.lmit_pics item = new AutoShowApp_MVC.lmit_pics();
    item = ViewBag.picInfo;
    <input type="text" id="model" value="@item.model" />
    <input type="text" id="description" value="@item.description" />
    <input type="submit" value="Save" /> 
}

1 个答案:

答案 0 :(得分:1)

您没有在图片编辑表单的输入上指定name属性。

<input type="text" id="model" value="@item.model" />

应该

<input type="text" id="model" name="model" value="@item.model" />

表单集合使用name属性,而不是Id属性,这就是为什么你没有得到任何数据(你是,它只是没有正确归因)。

但是,我同意上面的Wahid,使用强类型视图模型,编辑辅助工具等不仅有助于防止上述问题,而且在制作更安全,更易于维护的网站方面确实有很长的路要走。

豫ICP备18024241号-1