C# 导航时传递的模型为空

C# 导航时传递的模型为空,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我有一个MVC项目,正在尝试在导航时将serializedForm传递给我的控制器,它构建了LRSSearchMaster模型。因此,如前所述,我有一个名为lrsearchmaster的模型。当我调用页面更改时,它成功地传递了我的所有参数,除了lrsearchmaster。所有值都为null(即Party为null),即使它不应为null。导航时,如何将此模型和几个额外的参数传递给模型 型号 public partial class LRSSearchMaster { public LR

我有一个MVC项目,正在尝试在导航时将serializedForm传递给我的控制器,它构建了
LRSSearchMaster
模型。因此,如前所述,我有一个名为
lrsearchmaster
的模型。当我调用页面更改时,它成功地传递了我的所有参数,除了
lrsearchmaster
。所有值都为null(即Party为null),即使它不应为null。导航时,如何将此模型和几个额外的参数传递给模型

型号

public partial class LRSSearchMaster
{
    public LRS_Party Party { get; set; }
    public LRS_Settings Settings{ get; set; }
    public LRS_IndexedInstrument IndexedInstrument { get; set; }
    public LRS_InstrumentSubType InstrumentSubType { get; set; }

    [UIHint("DateFilter")]
    [DisplayName("Date Filter")]
    public int dateFilterValue { get; set; } = 0;

    public LRS_BookTypes BookTypes { get; set; }

    public DateTime fromDateFile { get; set; }
    public DateTime toDateFile { get; set; }
    public String ReverseSearchName { get; set; }

    public int grp { get; set; }

    public bool selectFile { get; set; } = false;
}
HTML

<a href='@Url.Action("SearchFilter1", "SearchFilter")' onclick='navigate(this.href);'>
    @*<input type="button" value='Submit' />*@
    <input id="btnSearch" type="button" value='Search (F8)' />
</a>
控制器

public ActionResult SearchFilter(LRSSearchMaster model, int searchType = 0)
{
    List<LRSSearchMaster> liSM = GetFilteredResults(model, searchType);
    ViewBag.searchType = searchType;
    return View("~/Areas/LRSSearch/Views/SearchFilter/SearchFilter.cshtml", liSM);
}
public ActionResult SearchFilter(LRSSearchMaster模型,int searchType=0)
{
List=GetFilteredResults(模型,搜索类型);
ViewBag.searchType=searchType;
返回视图(“~/Areas/lrsearch/Views/SearchFilter/SearchFilter.cshtml”,liSM);
}

从您的代码中,我不确定“oModel”变量在Javascript环境中来自何处。假设oModel实际上包含它应该包含的内容,我会怀疑Javascript中的AJAX参数名称应该是model,或者控制器变量应该是oSearchByName

但是,我在编写API2时只使用JSON作为参数,因此如果JSON无法正常工作,最好为模型中的每个字段传递一个Javascript字段,如:

{ model_Var1: 'a', model_Var2: 'b', ... }

我不确定代码中的“oModel”变量在Javascript环境中来自何处。假设oModel实际上包含它应该包含的内容,我会怀疑Javascript中的AJAX参数名称应该是model,或者控制器变量应该是oSearchByName

但是,我在编写API2时只使用JSON作为参数,因此如果JSON无法正常工作,最好为模型中的每个字段传递一个Javascript字段,如:

{ model_Var1: 'a', model_Var2: 'b', ... }

所以我最终要做的就是将我的模型转换成json字符串并发送给我的控制器。虽然我的参数仍然为null,但我可以通过执行Request.QueryString[MyParameterName]来访问字符串

url = '@Url.Action("SearchFilter", "SearchFilter")?model=' + JSON.stringify(data.oModel) + "&searchType=" + 1; window.location.href = url;
然后,在我的控制器中,我做了以下操作

model = JsonConvert.DeserializeObject<LRSSearchMaster>(Request.QueryString["model"]);
model=JsonConvert.DeserializeObject(Request.QueryString[“model]”);
还有瓦拉!我现在拥有过去的一切


我本来会使用表单提交,但客户端希望能够将URL发送给某人。

因此我最终要做的是将我的模型转换为json字符串并发送给我的控制器。虽然我的参数仍然为null,但我可以通过执行Request.QueryString[MyParameterName]来访问字符串

url = '@Url.Action("SearchFilter", "SearchFilter")?model=' + JSON.stringify(data.oModel) + "&searchType=" + 1; window.location.href = url;
然后,在我的控制器中,我做了以下操作

model = JsonConvert.DeserializeObject<LRSSearchMaster>(Request.QueryString["model"]);
model=JsonConvert.DeserializeObject(Request.QueryString[“model]”);
还有瓦拉!我现在拥有过去的一切


我本来会使用表单提交,但客户希望能够将URL发送给某人。

是的,它当前命名为model。我已经读到它没有通过模型,因为导航是一个get方法?他们是老帖子,所以我不知道这是否仍然适用。或者可能是因为模型中有多个层次?意思是党的阶级在LRSSearchMaster。所以它实际上是lrsearchmaster.Party.SearchName。这就是为什么它可能是空的吗?是的,它现在被命名为model。我已经读到它没有通过模型,因为导航是一个get方法?他们是老帖子,所以我不知道这是否仍然适用。或者可能是因为模型中有多个层次?意思是党的阶级在LRSSearchMaster。所以它实际上是lrsearchmaster.Party.SearchName。这可能就是为什么它是空的吗?