Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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 MVC FormCollection值_C#_.net_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 从控制器发回后保留ASP MVC FormCollection值

C# 从控制器发回后保留ASP MVC FormCollection值,c#,.net,asp.net-mvc,asp.net-mvc-3,C#,.net,Asp.net Mvc,Asp.net Mvc 3,在我的索引视图中,我需要允许用户输入搜索条件。此条件以FormCollection对象的形式发送回索引控制器。然后,我提取搜索条件,从数据库中提取请求的信息,并将用户发送回索引视图。但是,一旦用户返回到带有请求信息的索引视图,FormCollection对象中的数据现在为空 我希望能够在我使用的三个文本框中保留用户的搜索条件,但是我不确定如何使用FormCollection。有人知道我该怎么做吗 看法 最终编辑 没有注意到页面正在查找IEnuerable模型对象。将标题更改为此,并修复了该问题

在我的索引视图中,我需要允许用户输入搜索条件。此条件以FormCollection对象的形式发送回索引控制器。然后,我提取搜索条件,从数据库中提取请求的信息,并将用户发送回索引视图。但是,一旦用户返回到带有请求信息的索引视图,FormCollection对象中的数据现在为空

我希望能够在我使用的三个文本框中保留用户的搜索条件,但是我不确定如何使用FormCollection。有人知道我该怎么做吗

看法

最终编辑

没有注意到页面正在查找IEnuerable模型对象。将标题更改为此,并修复了该问题

@model Monet.ViewModel.ZipCodeIndex

好的,你要做的第一件事就是创建一个模型,一个新的类文件,看起来像这样

 public class AddressModel
    {    
        public int zip{ get; set; }
        public string state{ get; set; }
        public string date{ get; set; }      
    }
然后是另一个名为视图模型的新类文件,类似于这样。通过这种方式,您可以为不同的事情引用它。请输入您的搜索地址,然后在单独的列表中返回结果

public class AddressViewModel
    {
        public AddressModel SearchAddress { get; set; }
        public List<AddressModel> ResultsAddress{ get; set; }
    }
在你的控制器中,它与此类似

 public ActionResult Submit(AddressViewModel model)
        {
          model.ResultsAddress = (from z in db.ZipCodeTerritory
                        where z.StateCode.Equals(state) &&
                              z.EffectiveDate >= model.SearchAddress.date
                        select new AddressModel {
                        date = z.effectiveDate }).toList();
            return View("viewName", model);
        }
这将返回原始搜索条件和结果。可能并不是所有的功能都是百分之百的,但主要的想法都在那里,如果你决定走这条路,我可以帮助你解决问题

显示结果

@for (int i = 0; i < Model.ResultsAddress.Count; i++)
{
@Html.DisplayFor(model => model.ResultsAddress[i].date)
}
或者仅仅为了显示它们,top one可用于编辑和重新提交数据

@foreach (var item in Model.ResultsAddress)
{
    <div>@item.date</div>
}

好的,你要做的第一件事就是创建一个模型,一个新的类文件,看起来像这样

 public class AddressModel
    {    
        public int zip{ get; set; }
        public string state{ get; set; }
        public string date{ get; set; }      
    }
然后是另一个名为视图模型的新类文件,类似于这样。通过这种方式,您可以为不同的事情引用它。请输入您的搜索地址,然后在单独的列表中返回结果

public class AddressViewModel
    {
        public AddressModel SearchAddress { get; set; }
        public List<AddressModel> ResultsAddress{ get; set; }
    }
在你的控制器中,它与此类似

 public ActionResult Submit(AddressViewModel model)
        {
          model.ResultsAddress = (from z in db.ZipCodeTerritory
                        where z.StateCode.Equals(state) &&
                              z.EffectiveDate >= model.SearchAddress.date
                        select new AddressModel {
                        date = z.effectiveDate }).toList();
            return View("viewName", model);
        }
这将返回原始搜索条件和结果。可能并不是所有的功能都是百分之百的,但主要的想法都在那里,如果你决定走这条路,我可以帮助你解决问题

显示结果

@for (int i = 0; i < Model.ResultsAddress.Count; i++)
{
@Html.DisplayFor(model => model.ResultsAddress[i].date)
}
或者仅仅为了显示它们,top one可用于编辑和重新提交数据

@foreach (var item in Model.ResultsAddress)
{
    <div>@item.date</div>
}

Ryan Schlueter说得对,您应该使用ASP.NET MVC原则,如模型、自动绑定到动作参数中的模型字段等。但是,在这种情况下,您应该使用强类型视图:

行动:

public ActionResult SomeAction(ModelClass model)
{
    ....
    return("ViewName", model)
}
视图:


Ryan Schlueter说得对,您应该使用ASP.NET MVC原则,如模型、自动绑定到动作参数中的模型字段等。但是,在这种情况下,您应该使用强类型视图:

行动:

public ActionResult SomeAction(ModelClass model)
{
    ....
    return("ViewName", model)
}
视图:


我建议查看模型和viewmodels,而不是返回表单。如果你想研究的话,我可以给你一些例子。不使用模型和DefaultModelBinder有什么好的理由吗?你忽略了M inMVC@RyanSchlueter:是的,非常感谢。根据我收集的信息,每个人都建议我在模型zip、state和date上创建三个搜索属性,然后将它们返回到视图中?如果是这种情况,它们仍然必须在传入和传出模型对象之间传输,对吗?我建议查看模型和viewmodels,而不是返回表单。如果你想研究的话,我可以给你一些例子。不使用模型和DefaultModelBinder有什么好的理由吗?你忽略了M inMVC@RyanSchlueter:是的,非常感谢。根据我收集的信息,每个人都建议我在模型zip、state和date上创建三个搜索属性,然后将它们返回到视图中?如果是这种情况,它们仍然必须在传入和传出模型对象之间传输,对吗?所以我使用ViewModel来包含搜索条件,对吗?在索引页面上,我需要显示搜索条件视图模型和结果模型。使用此方法可能吗?是的,ViewModel同时保存这两个公共地址Model SearchAddress{get;set;}公共列表结果地址{get;set;}您的搜索是标准,结果是您的结果我将添加到解决方案中如何显示结果,明白了吗。因此,页面将被设置为显示如您所说的视图模型。好的,我来试一试。谢谢你的帮助!访问视图模型的属性时遇到一些问题。已将帖子编辑为详细信息。您是否尝试过将IEnumerable去掉并将其设置为@model Monet.ViewModel.ZipCodeIndexSo?我正在使用ViewModel包含搜索条件,对吗?在索引页面上,我需要显示搜索条件视图模型和结果模型。使用此方法是否可能?是ViewModel同时保存这两个公共地址Model SearchAddress{get;set;}公共列表结果Address{get;set;}您的搜索是
标准和结果是您的结果我将添加到解决方案中如何显示结果啊,明白了。因此,页面将被设置为显示如您所说的视图模型。好的,我来试一试。谢谢你的帮助!访问视图模型的属性时遇到一些问题。将帖子编辑为detail。您是否尝试过去掉IEnumerable并将其设置为@model Monet.ViewModel.ZipCodeIndexI?编辑帖子以详细说明此方法。出于某种原因,即使我指定了需要使用的视图模型,我也无法让索引页识别视图模型的属性。任何帮助都将不胜感激。我们编辑了这篇文章来详细介绍这种方法。出于某种原因,即使我指定了需要使用的视图模型,我也无法让索引页识别视图模型的属性。任何帮助都将不胜感激。谢谢
@model SomeNamespace.ModelClass

@using (Html.BeginForm("Submit", "Insert", FormMethod.Post))
{
    @Html.TextBoxFor(model => model.Property1)
    @Html.TextBoxFor(model => model.Property2)
    @Html.TextBoxFor(model => model.Property3)
   <input id="button" name="button" type="submit" value="submit" />
}