我有一个MVC项目,我试图在导航时将serializedForm(构建LRSSearchMaster
模型)传递给我的控制器。因此,如前所述,我有一个名为LRSSearchMaster
的模型。当我调用页面更改时,它会成功传递我的所有参数,LRSSearchMaster
除外。所有值都为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>
的Ajax
$.ajax({
url: "@Url.Action("SearchByNameLookUp", "SearchByName")",
data: JSON.stringify({ oSearchByName: oModel }),
type:"POST",
success: function (data)
{
if (data.succeed != true)
{
alert(data.errors);
bContinue = false;
}
else
{
oModel = data.oModel;
url = target + "?SM=" + JSON.stringify(data.oModel) + "&searchType=" + 1;
window.location.href = url
}
},
error: function (data)
{
alert("Error creating/loading Case. Please refresh the page and try again.");
}
});
控制器
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);
}
答案 0 :(得分:0)
我不确定你的代码在哪里&#34; oModel&#34;变量来自您的Javascript环境。假设oModel实际上包含它应该包含的东西,我怀疑Javascript中的AJAX参数名称应该是 model ,或者你的控制器变量应该是 oSearchByName 。
我在编写API2时只使用过JSON参数,所以如果你不能使JSON正常工作,你可能最好为模型中的每个字段传递一个Javascript字段,如: / p>
{ model_Var1: 'a', model_Var2: 'b', ... }
答案 1 :(得分:0)
所以我最近做的就是将我的模型转换为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"]);
瓦哈拉!我现在拥有通过的所有内容。
我会使用表单提交,但客户希望能够将URL发送给某人。