Asp.net mvc ASP.NET表单字段已包含数据

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();

我有两种方法(操作)来创建新的“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);
    }
另一个是这样的:

 // 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,但我不想说些愚蠢的话:)