Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我无法将id从视图发送到控制器_C#_Asp.net Mvc - Fatal编程技术网

C# 我无法将id从视图发送到控制器

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

Controller有两种方法。

您当前将下拉列表绑定到名为
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)
....