2

車両エンティティをモデル化する単純なモデルがあります。属性があります: モデル メイク カラー レジストレーション プレート

作成ビューで、ユーザーが登録プレートを使用してサーバー検索を実行し、モデル/メーカー/色情報を自動入力できるようにしたいと考えています。

そのため、次のようなアクションリンクを作成しようとしています:

@Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration)

RegLookup は、車両コントローラの get ActionResult メソッドであり、渡された登録フィールドに基づいてモデル/メーカー/色の情報を検索します。メーカー/モデル/カラー情報は別のデータベースから取得されます。

ただし、現在、ビューをレンダリングすると、アクション リンクに到達する前に、モデルが Null であることを示す例外がスローされます。

私が通過したいのは、事実上、登録を表すテキストボックスからの値です:

@Html.EditorFor(model => model.Registration)

この値を渡すにはどうすればよいですか?

4

3 に答える 3

3

CreateView では、通常、モデル プロパティは、 dropdowns などの事前設定された値を除いて、ほとんど空である必要があります。使用する必要があるのは、jQuery ajax を使用してアクション メソッドへの非同期呼び出しを行い、登録プレートに基づいて関連データを返し、それをフォームに入力することです。

このようにアクションリンクを保持できます

@Html.ActionLink("Look up registration", "RegLookup", "Vehicle",
                                                      new {@id="check"},null)

そして、JavaScript関数をクリックイベントにアタッチして、ajax呼び出しを行います

$(function(){

  $("#check").click(function(e){
    e.preventDefault();
    var item=$(this);
    var regPlateVal=$("#RegistrationPlate").val();
    $.getJSON(item.attr("href")+"?registration="+regPlateVal,function(data){
       if(data.Status=="success")
       {
         $("#Color").val(data.Color);
         $("#Model").val(data.Model);
       }
    });
  });

});

RegLookUpアクション メソッドがパラメーター (名前付き) を受け入れ、以下のような形式registrationでデータを返すと仮定します。JSON

{
  "Status": "success",
   "Color": "Red",
   "Model": "2011"
}
于 2012-08-14T16:45:27.480 に答える
0

クエリ文字列でプロパティを渡す必要があります。

@Html.ActionLink(
    "Look up registration", 
    "RegLookup", 
    "Vehicle", 
    new {
        registration = Model.Registration
    }
)

そして、コントローラーアクションは次のregistrationパラメーターを取ることができます:

public ActionResult RegLookup(string registration)
{
    ...
}
于 2012-08-14T16:45:37.870 に答える
0

プレート番号をサーバーに送信するには、通常の POST または AJAX を実行する必要があります。ビューでは、設計時にユーザーが入力した値がありません。

于 2012-08-14T16:51:58.113 に答える