ASP.NET表单字段已有数据

时间:2015-12-29 23:32:19

标签: 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();
    }

    // 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>

来自视图的部分代码。

1 个答案:

答案 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.
}