我有两个页面,一个编辑用户信息,一个编辑图片表中的信息。由于每个页面所需的数据类型不同,我最近停止使用强类型视图模型。
编辑用户信息的页面工作正常,但编辑图片信息的页面不会回发在输入字段中所做的任何编辑;除了正确的 ID 之外,所有其他值都返回为空。它们的结构似乎完全相同——我不知道有什么区别。据我所知,两个页面的代码是相同的,但我没有在第二个页面上获取数据。
有效的用户控制器和视图
控制器
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" />
}