8

SharedLayoutビュー(マスターページ)がユーザーに検索機能を提供するMVCアプリケーションがあります。注文番号または請求書番号で注文を検索できます。そのため、共有ビューとテキスト ボックスの 2 つのオプション ボタンがあります。コードはこのようなものです

   @using (Html.BeginForm("Track", "Tracking", FormMethod.Post))
        {
            <div style="text-align: center">
                <textarea cols="20" id="txtNo" name="txtOrderNo" rows="2" ></textarea>
            </div>
            <div style="text-align: center">
                <input type="radio" name="optOrderNo" checked="checked" value="tracking" />Order No                    <input type="radio" name="optRefNo" value="tracking" />Ref No
            </div>
            <div style="text-align: center">
                <input type="submit" value="Track" />
            </div>
        }

そのため、TrackingController とその中の Track メソッドに移動し、ビューを返します。ビューはコントローラーのメソッドに関連付けられているため、1 回の検索で問題なく動作します。正常に動作しますが、ラジオ ボタンの選択に基づいて条件付きで他のビューを返すにはどうすればよいでしょうか。

私が思いつくのはこれです

 [HttpPost]
    public ActionResult Track(FormCollection form)
    {
        string refNo = null;
        if (form["optRefNo"] == null)
        {
            string OrderNo = form["txtOrderNo"];
            var manager = new TrackingManager();
            var a = manager.ConsignmentTracking(OrderNo);
            var model = new TrackingModel();
            if (OrderNo != null)
                model.SetModelForConsNo(a, consNo);
            return View(model);
        }

        refNo = form["txtConsNo"];
        return TrackByRef(refNo);
    }

    public ActionResult TrackByRef(string refNo)
    {
       //what ever i want to do with reference no
        return View();
    }

よろしくお願いします。ありがとう

4

1 に答える 1

21

View最初のパラメーターが文字列であるオーバーロードがあります。これは、デフォルト (アクションの名前と一致するビュー) ではなく、使用するビューの名前 (またはパス) です。

public ActionResult TrackByRef(string refNo)
{
   //what ever i want to do with reference no
    return View("Track");
   // or, if you want to supply a model to Track:
   // return View("Track", myModel);
}
于 2012-06-18T07:23:00.390 に答える