2

I've been trying to figure out a solution for quite some time, to no avail. What I have is a form. I'm using ASP.NET MVC4 with jQuery Mobile. The user is first directed to the following screen:

enter image description here

Here, they choose a capsule and click Submit. The capsule they choose has a primary key value that I want to persist to the next page.

Once they click Submit, they will be taken to:

enter image description here

Here, they'll fill out the form and click "Create". The fillers list that you see on this screenshot is based on the capsule selected on the previous screen. So, depending on the capsule selected, the filler list above can vary. How can I retain the Capsule's primary key value that was selected on the previous screen and persist it to the next screen (a completely different view)? I understand I cannot use ViewBag because ViewBag is only in the scope of a single View. Essentially, what I want is the data on the form above, as well as the primary key of the capsule selected in the previous view.

4

3 に答える 3

3

View1 からサーバーに値をポストし、Controller アクション メソッドを介してそれを View2 に戻す必要があります。

//Serve the view when the URL is requested
    public ActionResult ViewAllItems()
    { 
        return View();
    }


//Handle the posted form from the ViewAllItems page
 [HttpPost]
    public ActionResult ViewAllItems(int selectedItemId)
    { 
        RedirectToAction("ViewItemDetail", new { id = selectedItemId });
    }

    public ViewResult ViewItemDetail(int id)
    { 
       var item = repo.GetItem(id);
       return View(item);
    }

ここで、コントローラ アクション メソッド ViewAllItems を持つメソッドは、ポストされた値を受け取り、ViewItemDetail メソッドにリダイレクトします。ViewItemDetail メソッドは、アイテム データをロードしてビューに渡します。したがって、ビューには ID が渡されます (完全なアイテムと共に)。

これは、値がコントローラー アクション メソッドに渡されてから、ビューに中継される一般的な MVC パターンです。

于 2013-02-21T03:19:33.020 に答える
0

この疑似コードを考えてみますが、本質的にコントローラーは次のようになります...

[HttpPost]
public ActionResult FormOnePost(ModelFromFormOne modelFromFormOne)
{
    var model = new ModelForFormTwo();
    model.Filters = IList<Filter> from database? query using id
    model.MoreStuff etc.
    return View("ViewTwoWithSecondForm", model);
}

これにより、パスで主キーが公開されなくなります。

于 2013-02-21T03:16:39.973 に答える