Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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# 将映像传递给控制器ASP.NET MVC_C#_Asp.net Mvc - Fatal编程技术网

C# 将映像传递给控制器ASP.NET MVC

C# 将映像传递给控制器ASP.NET MVC,c#,asp.net-mvc,C#,Asp.net Mvc,我正在尝试将图像和图像名称从视图发送到控制器 以下是我的控制器的外观: [HttpPost] public ActionResult Add(BoxAddViewModel image) { //TODO: Add new box return RedirectToAction("Index"); } 这就是模型: public class BoxAddViewModel : BaseViewModel { public int Id {

我正在尝试将图像和图像名称从视图发送到控制器

以下是我的控制器的外观:

  [HttpPost]
  public ActionResult Add(BoxAddViewModel image)
  {
      //TODO: Add new box
      return RedirectToAction("Index");
  }
这就是模型:

 public class BoxAddViewModel : BaseViewModel
 {
     public int Id { get; set; }
     [Required]
     [DisplayName("Name")]
     public string Name { get; set; }
     [Required]
     [DisplayName("Source")]
     public HttpPostedFileBase Source { get; set; }

 }
最后一个观点是:

@using (Html.BeginForm("Add", "BoxManagement", new { @class = "form-horizontal", enctype = "multipart/form-data" }))
{

    <div class="form-group">
        @Html.LabelFor(m => m.Name, new { @class = "col-sm-2 control-label" })
        <div class="col-sm-10">
            @Html.TextBoxFor(m => m.Name, new { @class = "form-control", @name = "Name"})
            @Html.ValidationMessageFor(m => m.Name)
        </div>
        @Html.LabelFor(m => m.Source, new { @class = "col-sm-2 control-label" })
        <div class="col-sm-10">
            <!--Html.TextBoxFor(m => m.Source, new { type = "file",}) -->
            @Html.ValidationMessageFor(m => m.Source)
            <input type="file" name="Source" id="Source" />
        </div>
    </div>
    <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span>Add</button>
    @Html.ActionLink("Cancel", "Index", null, new { @class = "btn btn-default" })
}
@使用(Html.BeginForm(“添加”、“BoxManagement”、新的{@class=“form horizontal”、enctype=“multipart/form data”}))
{
@LabelFor(m=>m.Name,新的{@class=“col-sm-2控制标签”})
@TextBoxFor(m=>m.Name,新的{@class=“form control”,@Name=“Name”})
@Html.ValidationMessageFor(m=>m.Name)
@LabelFor(m=>m.Source,新的{@class=“col-sm-2控制标签”})
@Html.ValidationMessageFor(m=>m.Source)
添加
@ActionLink(“取消”,“索引”,null,新建{@class=“btn btn default”})
}
它进入Add方法,Name属性值正确,但源为null


有人知道如何解决这个问题吗?

您使用了错误的
BeginForm()
重载,并添加了路由值,而不是html属性(始终检查生成的html)。使用

旁注:从
TextBoxFor()
方法中删除
new{@name=“name”}
。切勿尝试覆盖由
HtmlHelper
方法生成的
name
属性,除非您希望绑定失败(在这种情况下,它不会执行任何操作)

@using (Html.BeginForm("Add", "BoxManagement", FormMethod.Post, new { @class = "form-horizontal", enctype = "multipart/form-data" }))