【问题标题】:Don't know where the Request object is comng from不知道 Request 对象来自哪里
【发布时间】:2014-01-16 23:56:44
【问题描述】:

所以我的控制器里有这个方法

[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["HTMLAttachment"]Request["Names"] 等数据填充Request 对象感到困惑。它知道映射到模型吗?我说得有道理吗?

【问题讨论】:

    标签: javascript jquery asp.net-mvc forms httprequest


    【解决方案1】:

    因为您将所有输入都放在表单中,所以当您提交它时,浏览器将填充键值对,其中键是表单中输入的名称。它适用于表单中的每个输入元素,甚至是不可见的。 正如这里所说: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

    【讨论】:

    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多