Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 提交一个列表在post中变为空+;MVC_Asp.net Mvc_Asp.net Mvc 4_Http Post_Html Helper_Form Submit - Fatal编程技术网

Asp.net mvc 提交一个列表在post中变为空+;MVC

Asp.net mvc 提交一个列表在post中变为空+;MVC,asp.net-mvc,asp.net-mvc-4,http-post,html-helper,form-submit,Asp.net Mvc,Asp.net Mvc 4,Http Post,Html Helper,Form Submit,我有一个ViewModel: public class RegistrationViewModel { public string Country { get; set; } public ConfigurationParamValue CountryParam { get; set; } public string Civility { get; set; } public ConfigurationParamValue CivilityParam { get;

我有一个ViewModel:

public class RegistrationViewModel
{
    public string Country { get; set; }
    public ConfigurationParamValue CountryParam { get; set; }
    public string Civility { get; set; }
    public ConfigurationParamValue CivilityParam { get; set; }
    [FirstNameValidator(Category = "Registration", IsLocal = false )]
    public string FirstName { get; set; }
    public ConfigurationParamValue FirstNameParam { get; set; }
    [LastNameValidator(Category = "Registration", IsLocal = false)]
    public string LastName { get; set; }
    public List<int> Days { get; set; }
    public int SelectedDay{ get; set; }
    public List<Month> Months { get; set; }
    public Month SelectedMonth { get; set; }
    public List<int> Years { get; set; }
    public int SelectedYear { get; set; }
    public DateTime BirthDate { get; set; }
}
公共类注册视图模型
{
公共字符串国家{get;set;}
公共配置参数值CountryParam{get;set;}
公共字符串文明度{get;set;}
公共配置ParamValue CivilityParam{get;set;}
[FirstNameValidator(Category=“Registration”,IsLocal=false)]
公共字符串名{get;set;}
公共配置ParamValue FirstNameParam{get;set;}
[LastNameValidator(Category=“Registration”,IsLocal=false)]
公共字符串LastName{get;set;}
公共列表天数{get;set;}
public int SelectedDay{get;set;}
公共列表月份{get;set;}
公共月份SelectedMonth{get;set;}
公共列表年份{get;set;}
public int SelectedYear{get;set;}
公共日期时间出生日期{get;set;}
}
我使用此viewmodel创建视图:

@model Registration.Front.Web.Models.RegistrationViewModel

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>RegistrationViewModel</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Country)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Country)
            @Html.ValidationMessageFor(model => model.Country)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Civility)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Civility)
            @Html.ValidationMessageFor(model => model.Civility)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.LastName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.LastName)
            @Html.ValidationMessageFor(model => model.LastName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.BirthDate)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.SelectedDay, new SelectList(Model.Days))
            @Html.ValidationMessageFor(model => model.BirthDate)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Occupation)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Occupation)
            @Html.ValidationMessageFor(model => model.Occupation)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.ZipCode)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.ZipCode)
            @Html.ValidationMessageFor(model => model.ZipCode)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Password)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Password)
            @Html.ValidationMessageFor(model => model.Password)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.CGV)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.CGV)
            @Html.ValidationMessageFor(model => model.CGV)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Optin)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Optin)
            @Html.ValidationMessageFor(model => model.Optin)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.CNIL)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.CNIL)
            @Html.ValidationMessageFor(model => model.CNIL)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
@model Registration.Front.Web.Models.RegistrationViewModel
@{
ViewBag.Title=“Index”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
指数
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
注册视图模型
@LabelFor(model=>model.Country)
@EditorFor(model=>model.Country)
@Html.ValidationMessageFor(model=>model.Country)
@LabelFor(model=>model.Civility)
@EditorFor(model=>model.Civility)
@Html.ValidationMessageFor(model=>model.Civility)
@LabelFor(model=>model.FirstName)
@EditorFor(model=>model.FirstName)
@Html.ValidationMessageFor(model=>model.FirstName)
@LabelFor(model=>model.LastName)
@EditorFor(model=>model.LastName)
@Html.ValidationMessageFor(model=>model.LastName)
@LabelFor(model=>model.BirthDate)
@Html.DropDownListFor(model=>model.SelectedDay,newselectlist(model.Days))
@Html.ValidationMessageFor(model=>model.BirthDate)
@LabelFor(model=>model.occulation)
@EditorFor(model=>model.occulation)
@Html.ValidationMessageFor(model=>model.occulation)
@LabelFor(model=>model.ZipCode)
@EditorFor(model=>model.ZipCode)
@Html.ValidationMessageFor(model=>model.ZipCode)
@LabelFor(model=>model.Email)
@EditorFor(model=>model.Email)
@Html.ValidationMessageFor(model=>model.Email)
@LabelFor(model=>model.Password)
@EditorFor(model=>model.Password)
@Html.ValidationMessageFor(model=>model.Password)
@LabelFor(model=>model.CGV)
@EditorFor(model=>model.CGV)
@Html.ValidationMessageFor(model=>model.CGV)
@LabelFor(model=>model.Optin)
@EditorFor(model=>model.Optin)
@Html.ValidationMessageFor(model=>model.Optin)
@LabelFor(model=>model.CNIL)
@EditorFor(model=>model.CNIL)
@Html.ValidationMessageFor(model=>model.CNIL)

} @ActionLink(“返回列表”、“索引”)
这是我的控制器:

public ActionResult Index()
        {
        List<int> listDays = new List<int>(){1, 2, 3};
        return View(new RegistrationViewModel() { Days=listDays });
        }

[HttpPost]
public ActionResult Index( RegistrationViewModel rvm)
       {
       if (ModelState.IsValid)
          { return RedirectToAction("Welcome"); }

       return View(rvm);
       }

public ActionResult Welcome()
      {
      return View();
      }
public ActionResult Index()
{
List listDays=新列表(){1,2,3};
返回视图(new RegistrationViewModel(){Days=listDays});
}
[HttpPost]
公共行动结果索引(RegistrationViewModel rvm)
{
if(ModelState.IsValid)
{返回重定向到操作(“欢迎”);}
返回视图(rvm);
}
公众行动结果欢迎()
{
返回视图();
}

我的问题在帖子中,viewmodel的属性天数为空!!!!!如何更正此问题?

在您的视图中,您没有在表单中渲染天

使用name=“Days”类似的方式呈现窗体内的隐藏字段

foreach(var day in@Model.Days)
{
}

复制上面的代码,然后粘贴

@EditorFor(model=>model.CNIL)
@Html.ValidationMessageFor(model=>model.CNIL)


现在,当您提交时,Days值也将提交到Post方法,您将在Days列表中获得值。

哪一个是day属性?你是说列表天数?是的,提交中的rvm.day为空。你在RegistrationViewModel中没有名为day的属性。您有天和选择的日期。什么属性实际返回null?属性的名称是Days,我在submit rvm.Days==nullOk中得到它,这很好。如果我们想删除视图中列表的元素,该怎么办?