学习MVC创建一个简单的日期时间注册表单。我正在尝试为用户制作两个文本框。一个用于约会,一个用于时间。
我将在我的模型中的单个dateTime字段中保存这两个值。
所以我需要弄清楚如何在tempdata中存储一个表单字段,以便在发布时在控制器中访问。然后,我可以将两个文本框组合在一起,使dateTime存储在我的模型中。
我知道如何在控制器中获取tempdata,它只是形式上的剃刀语法我不能理解。
提前致谢。
答案 0 :(得分:1)
TempData不适合您的目的。您无法在视图中为TempData / ViewData分配值。您只能在控制器中为TempData / ViewData分配值,并在View中访问这些值。有关详细信息,请参阅此问题:TempData moving from view to controler
我建议您在场景中使用ViewModel,其中包含视图中所需的所有属性。请查看Mariusz在ASP.NET MVC - How exactly to use View Models
给出的答案答案 1 :(得分:0)
我认为更好的做法是让视图模型包含您希望从表单传递给控制器的所有信息。
查看型号:
public class MyViewModel
{
public string Username { get; set; }
public string Password { get; set; }
public string Date { get; set; }
public string Time { get; set; }
}
<强>控制器:强>
public ActionResult Signup()
{
var m = new MyViewModel();
return View(m);
}
[HttpPost]
public ActionResult Signup(MyViewModel m)
{
var username = m.Username;
var password = m.Password;
var date = m.Date;
var time = m.Time;
// ...
}
查看:强>
@model MvcApplication5.Controllers.MyViewModel
@* ... *@
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Username)
@Html.PasswordFor(m => m.Password)
@Html.TextBoxFor(m => m.Date)
@Html.TextBoxFor(m => m.Time)
<input type="submit" value="Submit" />
}