我一直在学习asp.net mvc 3.所以,基本上我正在尝试在数据库中创建一个新记录。但是,我正在尝试保留预定义的特定记录
public ActionResult Create()
{
var dc = new ServicesDataContext();
var model = new Maping();
var query = (from m in dc.Customers
where m.CustomerId == model.CustomerID
select m.CustomerId);
ViewData["CustomerID"] = query.First();
return View(model);
}
//
// POST: /Customerservice/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="CustomerServiceMappingID")] Maping serviceToCreate, FormCollection form)
{
if (!ModelState.IsValid)
return View();
var dc = new ServicesDataContext();
dc.Mapings.InsertOnSubmit(serviceToCreate);
try
{
dc.SubmitChanges();
}
catch (Exception e)
{
}
try
{
var id = Int32.Parse(form["CustomerID"]);
ViewData["CustomerID"] = id;
return RedirectToAction("Index", new { id = id });
}
catch
{
return RedirectToAction("INDEX", "Home");
}
}
所以这就是我所做的。所以,情况是第二个动作方法中的id值是我需要的。然而,第二种方法被重定向到索引,因此viewdata值丢失。我在第一个crate方法中所做的事情是错误的,因为没有赋值。那么,请你帮我解决这个问题。
答案 0 :(得分:0)
使用TempData,而不是ViewData - 在再次读取之前它将一直有效。另外,为什么在将它作为RedirectToAction中的参数传递时将它添加到viewdata中?