2017-06-08 29 views
1

MVC3のモデルバインディングを使用し、Razorを使用してすべての顧客をforeachループでレンダリングすると、顧客の検索結果ページに顧客のリストがバインドされます。私の質問は、どのようにして顧客のオブジェクトをアクションに戻して、細部をもう一度フェッチする必要がないかということです。以下はMVCモデルの複合型をアクションパラメータにバインドする

は私のアクションメソッドのシグネチャである:

public ActionResult BasketAddCustomer(Customer customer) 

Customerオブジェクトは、つまり、非常に大きいです。たくさんのフィールド

以下は、各顧客を表示し、それぞれのボタンを選択するビューの縮小バージョンです。

@model WebUI.Models.SearchModel 
@foreach (var customer in Model.Customers) 
    { 
       <h5>@customer.FirstName @customer.LastName</h5> 
       <button onclick="window.location.href = '@Url.Action("BasketAddCustomer", "Cust", customer)';">Select customer</button>      
    } 

この問題は、アクションに渡された顧客がヌルでいっぱいであるように見えることが原因であると考えられます。

@ URL.Actionによってレンダリングされるhtmlは、以下の通りであり、良いスタートのように見えますが、すべてではなく、いくつかの顧客フィールドしかありません。顧客はこのように崩壊するにはあまりにも複雑すぎますか?それを行うより良い方法はありますか? @のurl.actionと私の知識を1として

<button onclick="window.location.href = 
'/Test/Cust/BasketAddCustomer?BirthDate=01%2F01%2F0001%2000%3A00%3A00&amp;PrimaryEmailFlag=False&amp;PrimaryEmailDate=01%2F01%2F0001%2000%3A00%3A00&amp;PrimaryEmailID=0&amp;PrimaryPhoneFlag=False&amp;PrimaryPhoneDate=01%2F01%2F0001%2000%3A00%3A00&amp;PrimaryPhoneID=0&amp;WifiConnected=False';" >Select customer</button> 
+2

あなたが唯一の顧客のIDとあなたの行動にあなたはidが渡さ使用してDBから顧客を選択するか、オブジェクトを渡すために、AJAX要求を使用することができますを渡すことができ –

+0

はいああ、AJAXリクエストはおそらくそれを行う方法です、多くのありがとう。 – user2145210

答えて

0

我々は唯一のルート値を送信することができますし、オブジェクト自体を送信できませんでした。だからあなたの問題のために、あなたはurl.helperでルートパラメータとしてコントローラのアクションに任意の一意の値を送信することができ、アクションでLINQクエリを使用して、データベースからオブジェクト全体を取得https://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action(v=vs.118).aspx

は親切に、このリンクを参照してください。 。

注:要件には、オブジェクトのみを送信する必要がある場合は、フォーム内のすべてのコントロールをビューに配置し、ポストメソッドとして送信することができます。

上記の情報は役に立ちましたか?

おかげ

カルティク

関連する問題