2

私は mvc 4 アプリケーションを開発しています。私が抱えている唯一の問題は、ユーザーが入力する複数ページのフォームの最後にあることです。入力したすべての情報を表示する要約ページが必要です。これを行う最も簡単な方法は部分ビューを使用して、データを入力したさまざまなページからフォーム データを表示します。フォームのページからページへと、入力しているフォームのデータベース内の ID 番号を表す int パラメータが渡されます (ユーザーはログインに必要なため、事前にその ID を電子メールで受け取ります)。問題は、フォームが完成し、その概要ページが読み込まれると、メイン ビューが id パラメータ (たとえば、mysite.com/vendor/quotesummary/22) で読み込まれることですが、渡す方法がわかりません。そのパラメータ、正しいデータをロードするために部分ビューに。だからここに私のコードがどのように見えるかです:

私のコントローラーで:

[HttpGet]
    public ActionResult QuoteSummary(int id = 0)
    {
        General_Info general_info = unitOfWork.General_Info_Repository.GetByID(id);
        return View(new QuotesViewModel(general_info));
    }

    [HttpGet]
    [ChildActionOnly]
    public ActionResult GenInfoSummary()
    {

        return View(new QuotesViewModel());
    }

    [HttpGet]
    [ChildActionOnly]
    public ActionResult QuoteDataSummary()
    {

        return View(new QuotesViewModel());
    }

そして、私の QuoteSummary ビューには次のものがあります。

@model SourceMvc.DAL.QuotesViewModel
@{
    ViewBag.Title = "QuoteSummary";
 }

<h2>Quote Summary</h2>

@Html.Partial("QuoteSummaryChildOne", new SourceMvc.DAL.QuotesViewModel());
@Html.Partial("QuoteSummaryChildTwo", new SourceMvc.DAL.QuotesViewModel());

私が言ったように、私の QuoteSummary は正しい id パラメータでロードされていますが、そのパラメータが部分ビューに渡されるまでは何の意味もありません。

私はこれを2日間理解しようとしてきましたが、答えは簡単でなければならないと感じているので、とてもイライラしています. 皆さんが提供できるどんな助けも大歓迎です。

4

3 に答える 3

3
[HttpGet]
public ActionResult QuoteSummary(int id = 0)
{
    General_Info general_info = unitOfWork.General_Info_Repository.GetByID(id);
    return View(new QuotesViewModel(general_info));
}

[HttpGet]
[ChildActionOnly]
public ActionResult GenInfoSummary(int id = 0)
{

    return View(new QuotesViewModel(/* whatever info you need from id */));
}

[HttpGet]
[ChildActionOnly]
public ActionResult QuoteDataSummary(int id = 0)
{

    return View(new QuotesViewModel(/* whatever info you need from id */));
}

そして、あなたのビューでは、QuotesViewModel に Id プロパティがあると仮定します

@model SourceMvc.DAL.QuotesViewModel
@{
    ViewBag.Title = "QuoteSummary";
 }

<h2>Quote Summary</h2>

@Html.Action("GenInfoSummary", Model.Id);
@Html.Action("QuoteDataSummary", Model.Id);
于 2013-03-22T13:23:19.357 に答える
0

その値の名前はルーティング定義から来ています。そのため、設定できません。ルーティングによって URL から取得され、その値が優先されます。問題の解決策は、提案されたようにアクションでそれをリセットするか、ルーティング定義を調整することです。

于 2013-03-22T19:27:34.197 に答える