2014-01-16 128 views
0

comng所以在我的控制器不知道哪裏Request對象從

[HttpPost] 
public ActionResult Summary(string id, Summary model) 
{ 
    int projectID; 
    if (Int32.TryParse(id, out projectID)) 
    { 
    switch (Request["PageType"]) 
    { 
     case "Results": 
     model = new Summary(SummaryType.SCS, GetSCSData(projectID, Request["Names"], true), projectID, SCSView.ResultsPage); 
     break; 
     case "Recipients": 
     model = new Summary(SummaryType.SCS, GetProjectData(projectID, Request["Names"]), projectID) 
     { 
      Names = Request["Names"], 
      HTMLAttachment = ParseBool(Request["HTMLAttachment"]) 
     }; 
     break;      
     default: 
     model = new Summary(); 
     break; 
     } 
    } 

這種方法,想知道其中Request["Names"]是從哪裏來的。我明白這是來自我的Http請求調用的請求對象。但是它是如何構建和發送的?我知道它是與我的觀點,這看起來像這樣

using (Html.BeginForm(Summary, "Mycontroller", FormMethod.Post, new { id = "gridForm" })) 
    { 
    @(Html.Kendo().Grid(Model.scsGridList) ... kendo stuff 
    <input id="gridPage" name="PageType" type="hidden" value="" /> 
    <input id="gridProjectID" name="ProjectID" type="hidden" value="@Model.ProjectID" /> 
    <input id="gridJobs" name="Jobs" type="hidden" value="" /> 
    <input id="gridHTMLAttach" name="HTMLAttachment" type="hidden" value="true" /> 
    <div style="width: 100%; padding-top:5px;">       
    <a id="email" href="#"><span class="ui-icon ui-icon-mail-closed linkicon"></span>Email</a>        
    </div> 

在我的JavaScript這個

$("#email").on("click", function (e) { 
     SendTo("Recipients"); 
    }); 

function SendTo(pageType){ 
    var values = GetSelectedValues(); 
    if(values){ 
     $("#gridPage").val(pageType); 
     $("#gridJobs").val(values); 
     $("#gridForm").submit(); 
    } else { 
     $("#gridMessage").html("Please select a job."); 
    } 
} 

我只是混淆爲Request對象如何來填充數據如Request["HTMLAttachment"]Request["Names"]。它知道映射到模型嗎?我有道理嗎?

回答

0

因爲您將所有輸入放在表單中,那麼當您提交它時,瀏覽器將填充鍵值對,其中鍵是窗體內的插入名稱。它會爲每一個形式的輸入元素做,甚至是不可見的。 正如在這裏說:http://msdn.microsoft.com/en-us/library/ms524948(v=vs.90).aspx

Request對象檢索客戶端瀏覽器的HTTP請求中傳遞 到服務器的值。

這是免費提供給您的asp.net。 asp.net mvc使用它。 http://stephenwalther.com/archive/2008/03/18/asp-net-mvc-in-depth-the-life-of-an-asp-net-mvc-request

+0

我很好奇Id和Model從哪裏來的? –

+1

這就是所謂的模型綁定。在這裏閱讀更多信息http://msdn.microsoft.com/en-us/magazine/hh781022.aspx,並在這裏http://msdn.microsoft.com/en-us/library/dd410405(v=vs.100).aspx – vmg