Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# C ASP.NET在dropdownlist更改的post方法中的传递模型_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# C ASP.NET在dropdownlist更改的post方法中的传递模型

C# C ASP.NET在dropdownlist更改的post方法中的传递模型,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我试图在Razor代码中DropDownList发生变化时传递我的模型,但我的模型信息没有传递到post方法,即使调用了post方法 在我的剃刀里: @model Namespace.Models.MyModel @using (Html.BeginForm("myFunc", "Home", FormMethod.Post, new { myModel = Model })) { @Html.DropDownListFor(m => m.SelectedType, new Se

我试图在Razor代码中DropDownList发生变化时传递我的模型,但我的模型信息没有传递到post方法,即使调用了post方法

在我的剃刀里:

@model Namespace.Models.MyModel

@using (Html.BeginForm("myFunc", "Home", FormMethod.Post, new { myModel = Model }))
{
    @Html.DropDownListFor(m => m.SelectedType, new SelectList(Model.Types, "Id", "Desc", Model.SelectedType), new { @class = "form-control", style = "display: inline;", @onchange = "this.form.submit()" })
}
我的模型:

public class MyModel
{
    public List<myData> myList = new List<myData>();
    public List<myType> Types = new List<myType>();
    public string SelectedType;
}
如果我在myFunc中放置一个断点,我可以看到它在我的DropDownList更改时进入,但是模型信息不会传递给函数。我肯定我错过的可能是一件小事,但我就是看不见

呈现的HTML是:

<form action="/Home/myFunc" myModel="Namespace.Models.MyModel" method="post">
   <select class="form-control" id="SelectedType" name="SelectedType" onChange="(this.form).submit()" style="display: inline;">
      <option selected="selected" value="FT">Fault</option>
      <option value="QY">Query</option>
      <option value="RQ">PM Request</option>
   </select>
</form>

默认情况下,它只查看公共属性,而不查看字段

MVC将尝试按名称将请求数据绑定到操作参数。MVC将使用参数名及其公共可设置属性的名称查找每个参数的值。在上面的示例中,惟一的操作参数是id,MVC将其绑定到路由值中具有相同名称的值。除了路由值之外,MVC还将绑定来自请求各个部分的数据,并按照设置的顺序进行绑定

我把你的模型从最上面的改到最下面的,这样就成功了

public class MyModel
{
    public List<myData> myList {get;set;}
    public List<myType> Types{get;set;}
    public string SelectedType {get;set;}
}

默认情况下,它只查看公共属性,而不查看字段

MVC将尝试按名称将请求数据绑定到操作参数。MVC将使用参数名及其公共可设置属性的名称查找每个参数的值。在上面的示例中,惟一的操作参数是id,MVC将其绑定到路由值中具有相同名称的值。除了路由值之外,MVC还将绑定来自请求各个部分的数据,并按照设置的顺序进行绑定

我把你的模型从最上面的改到最下面的,这样就成功了

public class MyModel
{
    public List<myData> myList {get;set;}
    public List<myType> Types{get;set;}
    public string SelectedType {get;set;}
}

您的视图在@using语句下是否有@model MyModel行?MyModel not\u model您说模型信息不会传递给函数。您的意思是SelectedType属性为空还是值列表为空?视图模型和输入模型不是同一种类型!准备合适的输入模型。如果您不确定,请使用fiddler或浏览器工具检查帖子正文的确切内容。您的列表绝对不应填写在帖子上,但应填写SelectedType selected值。现在还不清楚为什么不是。您的视图在@using语句下是否有@model MyModel行?MyModel Not\u model您说模型信息不会传递给函数。您的意思是SelectedType属性为空还是值列表为空?视图模型和输入模型不是同一种类型!准备合适的输入模型。如果您不确定,请使用fiddler或浏览器工具检查帖子正文的确切内容。您的列表绝对不应填写在帖子上,但应填写SelectedType selected值。目前尚不清楚原因。可能值得进一步解释,默认情况下只序列化/反序列化公共属性,而不序列化字段。Will do正在试图找到一篇详细介绍它的好文章,但没有找到多少。也许可以很快解释一下。@RyanSchlueter谢谢Ryan,这确实有效,我不确定为什么though@badNameHere刚刚添加了一些信息。如果你需要更多的解释,请告诉我。谢谢,这是很有帮助的,对于前端开发来说还是比较新的,我已经在这方面停留了很久了。Goodluck成功访问2k Rep可能值得进一步解释,默认设置是只序列化/反序列化公共属性,而不是字段。Will do试图找到一篇详细介绍它的好文章,但没有找到太多。也许可以很快解释一下。@RyanSchlueter谢谢Ryan,这确实有效,我不确定为什么though@badNameHere刚刚添加了一些信息。如果你需要更多的解释,请告诉我。谢谢,这是很有帮助的,对于前端开发来说还是比较新的,我已经在这方面停留了很久了。祝你好运,成功晋级2k
public class MyModel
{
    public List<myData> myList {get;set;}
    public List<myType> Types{get;set;}
    public string SelectedType {get;set;}
}