2016-05-10 4 views
1

私はMVCプロジェクトを持っており、ナビゲートするときにLRSSearchMasterモデルを構築するserializedFormをコントローラに渡そうとしています。だから、前述のように、私は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({ 
    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."); 
    } 
}); 

CONTR oller

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

私は「oModel」変数は、あなたのJavaScript環境でから来て、あなたのコードからはわかりません。 oModelに実際に必要なものが含まれていると仮定すると、JavascriptのAJAXパラメータ名はモデル、コントローラ変数はoSearchByNameである必要があります。

あなたはJSONの作業を取得することができない場合は、あなたのようなモデルでは、各フィールドのJavaScriptフィールドを渡すほうがよいかもしれませんので、しかしAPI2を書くとき、私がしかのパラメータにJSONを使用しました

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

ええ、それは現在モデルと呼ばれています。ナビゲーションはgetメソッドなので、モデルを渡さないと読んだことがありますか?彼らは古い投稿だったので、それはもはや関係するかどうかわかりません。それとも、モデルに複数レベルの層があるため、潜在的に可能性がありますか? PartyクラスがLRSSearchMasterにあることを意味します。したがって、実際はLRSSearchMaster.Party.SearchNameです。なぜそれがnullかもしれないのでしょうか? – Godrules500

0

私がしたことは、モデルをjson文字列に変換してコントローラに送信したことです。私のパラメータがまだnullであったが、私は自分のコントローラに続いて[MyParameterName]

url = '@Url.Action("SearchFilter", "SearchFilter")?model=' + JSON.stringify(data.oModel) + "&searchType=" + 1; window.location.href = url; 

を場合、Request.QueryString行うことで、文字列にアクセスすることができた私は、以下を行いました。

model = JsonConvert.DeserializeObject<LRSSearchMaster>(Request.QueryString["model"]); 

とwahlah!私は今、渡されたすべてを持っています。

私はフォーム提出を使用しましたが、クライアントはそのURLを誰かに送信できるようにしたいと考えました。

関連する問題