none
asp.net mvc3 master page传值 RRS feed

  • 问题

  • 我在master page里有一个查询功能,master page不能绑定Model,如何可以把页面的值传到对应的controller里,我想用TempData要怎么赋值,试过FormCollection对象 只拿到了他的key值,value都是空,或者用js能否给 TempData赋值,有什么办法,求指教。

    界面代码如下:

    @using (Html.BeginForm("Search", "Home", FormMethod.Post))

                            {

                                <fieldset>

                                    <div class="searchCondition">

                                        <label>

                                            OV/FA</label><input id="ov" name="ov" type="radio" value="OV/FA" checked="checked"

                                                onclick="ovChecked();" />

                                        <label>

                                            Siebel</label><input id="siebel" name="siebel" type="radio" value="Siebel" onclick="siebelChecked();" />

                                    </div>

                                    <div class="searchCondition">

                                        <select id="searchType" name="searchType">

                                            <option value="Control Number">Control Number</option>

                                            <option value="Comments">Comments</option>

                                            <option value="Background">Background</option>

                                            <option value="Project Name">Project Name</option>

                                        </select></div>

                                    <input type="text" id="searchContent" name="searchContent" value="" />

                                    <input type="submit" class="searchButton" value="Search" onclick="return search();" />

                                </fieldset>

                            }

    Action:

            [HttpPost]

            public ActionResult Search(FormCollection collection)

            {

                try

                {

                    //string requestType = TempData["requestType"].ToString();

                    //string searchType = TempData["searchType"].ToString();

                    //string searchValue = TempData["searchContent"].ToString();

                    string searchType = collection["searchContent"];

                    return RedirectToAction(ActionType.HOME_ACTION, ControllerType.HOME_CONTROLLER);

                }

                catch (Exception)

                {

                    return RedirectToAction(ActionType.ERROR_ACTION, ControllerType.ERROR_CONTROLLER);

                }

            }

    2012年1月16日 11:29

答案

  • 我这样试,是可以取得到masterpage里表单的值

    _Layout.cshtml

    @using (Html.BeginForm("Search", "Home", FormMethod.Post))
     
                            {
     
                                <fieldset>
     
                                    <div class="searchCondition">
     
                                        <label>
     
                                            OV/FA</label><input id="ov" name="ov" type="radio" value="OV/FA" checked="checked"
     
                                                onclick="ovChecked();" />
     
                                        <label>
     
                                            Siebel</label><input id="siebel" name="siebel" type="radio" value="Siebel" onclick="siebelChecked();" />
     
                                    </div>
     
                                    <div class="searchCondition">
     
                                        <select id="searchType" name="searchType">
     
                                            <option value="Control Number">Control Number</option>
     
                                            <option value="Comments">Comments</option>
     
                                            <option value="Background">Background</option>
     
                                            <option value="Project Name">Project Name</option>
     
                                        </select></div>
     
                                    <input type="text" id="searchContent" name="searchContent" value="" />
     
                                    <input type="submit" class="searchButton" value="Search"  />
     
                                </fieldset>
     
                            }
    
    

    HomeController.cs

            [HttpPost]
            public ActionResult Search(FormCollection collection)
            {
    
              
    
                  
                    TempData["searchType"] = collection["searchContent"];
    
                    return View();
     
    
            }
    

    Search.cshtml

    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <title>Search</title>
    </head>
    <body>
        <div>
            @TempData["searchType"]
        </div>
    </body>
    </html>
    
    


    • 已标记为答案 Crag.Wang 2012年1月16日 14:28
    2012年1月16日 14:22