C# 我无法将id从视图发送到控制器
Controller有两种方法。您当前将下拉列表绑定到名为C# 我无法将id从视图发送到控制器,c#,asp.net-mvc,C#,Asp.net Mvc,Controller有两种方法。您当前将下拉列表绑定到名为Vozilo的属性。回发单个值(在您的例子中是VoziloID或所选选项。然后,您的post方法尝试将复杂对象Vozilo绑定到int(假设VoziloID是typeofint)这当然会失败,并且模型为null`。您可以通过将方法更改为 [HttpPost] public ActionResult PokreniIzvjestaj(Vozilo v) { ReportClass rpt = new
Vozilo
的属性。
回发单个值(在您的例子中是VoziloID
或所选选项。然后,您的post方法尝试将复杂对象Vozilo
绑定到int
(假设VoziloID是typeof
int)这当然会失败,并且模型为
null`。您可以通过将方法更改为
[HttpPost]
public ActionResult PokreniIzvjestaj(Vozilo v)
{
ReportClass rpt = new ReportClass();
rpt.FileName = Server.MapPath("~/Reports/Vozilo.rpt");
rpt.Load();
//ReportMethods.SetDBLogonForReport(rpt);
//ReportMethods.SetDBLogonForSubreports(rpt);
// rpt.VerifyDatabase();
rpt.SetParameterValue("@VoziloId",v.VoziloID);
Stream stream = null;
stream = rpt.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
return File(stream, "application/pdf", "Vozilo.pdf");
//PortableDocFormat--pdf format
//application/pdf -- vezan za pdf format, ako je drugi tip mjenja se u zavisnosti od izabranog
//naziv.pdf -- naziv dokumenta i izabrana ekstenzija
}
[HttpGet]
public ActionResult PokreniIzvjestaj()
{
var vozila = db.Voziloes.ToList();
return View(vozila);
}
参数Vozilo
现在将包含所选VoziloID
的值
但是,当使用视图模型时,不清楚为什么要“在不使用viewmodel的情况下解决此问题”是正确的方法吗
视图模型
[HttpPost]
public ActionResult PokreniIzvjestaj(int Vozilo)
控制器
public class VoziloVM
{
[Display(Name = "Vozilo")]
[Required(ErrorMessage = "Please select a Vozilo")]
public int? SelectedVozilo { get; set; }
public SelectList VoziloList { get; set; }
}
看法
你能显示控制器的动作吗?谢谢你的帮助。它解决了问题。再次感谢。
public class VoziloVM
{
[Display(Name = "Vozilo")]
[Required(ErrorMessage = "Please select a Vozilo")]
public int? SelectedVozilo { get; set; }
public SelectList VoziloList { get; set; }
}
public ActionResult PokreniIzvjestaj()
{
var viziloList = db.Voziloes.Select(v => v.VoziloID);
VoziloVM model = new VoziloVM();
model.VoziloList = new SelectList(viziloList)
model.SelectedVozilo = // set a value here if you want a specific option selected
return View(model);
}
[HttpPost]
public ActionResult PokreniIzvjestaj(VoziloVM model)
{
// model.SelectedVozilo contains the value of the selected option
....
}
@model YourAssembly.VoziloVM>
....
@Html.LabelFor(m => m.SelectedVozilo)
@Html.DropDownListFor(m => m.SelectedVozilo, Model.VoziloList, "-Please select-")
@Html.ValidationMessageFor(m => m.SelectedVozilo)
....