Asp.net mvc ASP.NET表单字段已包含数据
我有两种方法(操作)来创建新的“racun”。不同的是,第一个有下拉列表来选择kupac_id(FK),第二个已经有了通过GET方法发送的kupac_id。第一个看起来像这样:Asp.net mvc ASP.NET表单字段已包含数据,asp.net-mvc,Asp.net Mvc,我有两种方法(操作)来创建新的“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();
// 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);
}
另一个是这样的:
// 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);
}
所以,当我运行第一个动作时,我得到了这个->
和第二->
为什么会这样,我能去掉那个些数字,像第一个动作那个样有一个空字段吗?
我需要任何帮助。编辑:
<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>
@LabelFor(model=>model.dv_racuna,htmlAttributes:new{@class=“controllabel col-md-2”})
@EditorFor(model=>model.dvracuna,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.dv_racuna,“,new{@class=“text danger”})
视图中的部分代码。在第二个操作方法中,您正在将
racun
视图模型的对象传递给视图,我假设您在此视图模型中有一个类型为DateTime
的属性
public class racun
{
public DateTime Datum_Racuna {set;get;}
}
在你看来
@model racun
@using(Html.BeginForm())
{
@Html.EditorFor(s=>s.Datum_Racuna)
}
如果未将此属性的值设置为有效的datetime,它将返回您在表单字段中看到的datetime.MinValue
值(1/1/0001 12:00:00 AM
)
如果希望避免这种行为,可以将属性类型从DateTime
更改为可为空的DateTime(DateTime?
)
现在,由于您将属性类型更改为nullable,因此在访问该值之前应该进行null检查,以避免出现null引用异常
[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.
}
你认为这个领域和什么有关?我不确定我是否理解你的问题。但是我猜这部分代码(我会把它放在我的问题中)可以告诉你一些事情。谢谢你的注意。基于当前问题中的代码,模型上的
dv_racuna
属性包含正在显示的DateTime
值(或视觉上类似的值)。是的,我在managament studio中创建了数据库,它是smalldatetime。它也不是空的。但我不明白为什么在第二个行动领域已经提交了一些日期,而在第一个没有,我可以删除第二个行动的日期,很难说从代码显示为什么这两个行为会不同。不同的动作名称表明有两种观点。如果是这样的话,视图中这些字段的代码可能会有所不同?您还可以在返回视图(racun)上放置调试断点代码>行并检查发送到每个视图的模型,以查看是否存在差异。这可能会帮助你缩小问题的范围。Thx,o7,我在想,可能是因为NOT NULL,但我不想说些愚蠢的话:)