所以我的控制器中有这个方法
[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对象感到困惑。是否知道要映射到模型?我有道理吗?
答案 0 :(得分:0)
因为您将所有输入放在表单中,所以当您提交它时,浏览器将填充键值对,其中键是表单内的inpurs的名称。它将为表单中的每个输入元素执行操作,甚至是不可见的。 正如它在此处所述: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