我有两种方法(动作)来创建新的“racun”。区别在于,第一个有下拉列表选择kupac_id(FK),第二个已经有GET方法发送的kupac_id。第一个看起来像这样:
// GET: racuns/Create
public ActionResult Create()
{
ViewBag.kupac_id = new SelectList(db.kupacs, "id_kupac", "naziv");
return View();
}
// POST: racuns/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "id_racun,dv_racuna,status,dv_placanja,kupac_id")] racun racun)
{
if (ModelState.IsValid)
{
db.racuns.Add(racun);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.kupac_id = new SelectList(db.kupacs, "id_kupac", "naziv", racun.kupac_id);
return View(racun);
}
另一个是这样的:
// GET: racuns/CreateZaKupca
public ActionResult CreateZaKupca(int vid)
{
return View(new racun { kupac_id = vid });
}
// POST: racuns/CreateZaKupca
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateZaKupca([Bind(Include = "id_racun,dv_racuna,status,dv_placanja,kupac_id")] racun racun)
{
if (ModelState.IsValid)
{
db.racuns.Add(racun);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(racun);
}
所以,当我运行第一个动作时,我得到了这个 - > http://prntscr.com/9k2cmc 和第二 - > http://prntscr.com/9k2e56 为什么这样,我可以摆脱这些数字,并在第一个动作中有空场? Ty可以提供任何帮助。编辑:
<div class="form-group">
@Html.LabelFor(model => model.dv_racuna, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.dv_racuna, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.dv_racuna, "", new { @class = "text-danger" })
</div>
</div>
来自视图的部分代码。
答案 0 :(得分:1)
在第二个操作方法中,您将racun
视图模型的对象传递给视图,我假设您在此DateTime
类型的视图模型中有一个属性。
public class racun
{
public DateTime Datum_Racuna {set;get;}
}
在您看来,像
@model racun
@using(Html.BeginForm())
{
@Html.EditorFor(s=>s.Datum_Racuna)
}
如果您没有将此属性的值设置为有效的日期时间,它将返回DateTime.MinValue
值(1/1/0001 12:00:00 AM
),这是您在表单字段中看到的。
如果您希望避免此行为,可以将属性类型从DateTime
更改为Nullable DateTime(DateTime?
)。
public class racun
{
public DateTime? Datum_Racuna {set;get;}
}
现在,由于您已将属性类型更改为nullable,因此应在访问该值之前执行null检查以避免Null Reference异常。
[HttpPost]
public ActionResult Create(racun model)
{
if(model.Datum_Racuna!=null)
{
var dtValue=model.Datum_Racuna.Value;
}
// to do :do something useful and return something useful.
}