现在,在我的页面上,我在其中一个视图<button type="button" id="show">Find Project</button>
的顶部有一个按钮,当按下该按钮时,会在页面底部呈现部分视图(这是一个表格)。我的布局格式为:
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<!--this is my navbar-->
</div>
<div class="container body-content">
@RenderBody()
</div>
<div class="wrapper">
<!-- TABLE WILL APPEAR HERE -->
</div>
</body>
使表格显示的javascript是:
$(document).ready(function() {
$("#show").on("click", function() {
$.ajax({
url: '/Projects/SearchTable',
type: "GET"
}).done(function(partialViewResult) {
$(".wrapper").html(partialViewResult);
$(".wrapper").css('display', 'block');
});
});
});
/Projects/SearchTable
是呈现局部视图的控制器操作:
[HttpGet]
public ActionResult SearchTable()
{
var states = GetAllStates();
var model = new ProjectClearanceApp.Models.ProjectViewModel();
model.States = GetSelectListItems(states);
model.Projects = from m in db.Projects select m;
return PartialView("~/Views/Projects/_ClearedProjects.cshtml", model);
}
文本框分散在我的主视图中,并且所有文本框都以相同的格式显示:
<div class="col-md-5 entry-field">
@Html.LabelFor(model => model.Project.FirstNamedInsured, htmlAttributes: new { @class = "control-label" })
@Html.TextBoxFor(model => model.Project.FirstNamedInsured, new { @class = "form-control text-box single-line", maxlength=150 })
@Html.ValidationMessageFor(model => model.Project.FirstNamedInsured, "", new { @class = "text-danger" })
</div>
除了两个格式如下的下拉列表外:
<div class="col-md-3 address-info">
@Html.LabelFor(m => m.Project.FirstNamedInsuredAddress.State, htmlAttributes: new { @class = "address-label" })
@Html.DropDownListFor(m => m.Project.FirstNamedInsuredAddress.State,
Model.States,
"--",
new { @class = "form-control address-entry" })
@Html.ValidationMessageFor(model => model.Project.FirstNamedInsuredAddress.State, "", new { @class = "text-danger" })
</div>
其中Model.States是一个可枚举的,用于填充所有状态的下拉列表。
是否可以从这些文本框中获取数据并将它们作为数据/参数传递给控制器,以便在部分视图中使用而无需提交表单或刷新页面?
答案 0 :(得分:2)
发送如下参数:
public ActionResult SearchTable(string firstNamedInsured)
{
//Use the parameter in the model or any where
var states = GetAllStates();
var model = new ProjectClearanceApp.Models.ProjectViewModel();
model.States = GetSelectListItems(states);
model.Projects = from m in db.Projects select m;
return PartialView("~/Views/Projects/_ClearedProjects.cshtml", model);
}
和javascript:
$(document).ready(function () {
$("#show").on("click", function () {
$.ajax({
url: '/Projects/SearchTable?firstNamedInsured=' + $('#' + @Html.IdFor(m => m.Project.FirstNamedInsured)).val(),
type: "GET"
}).done(function (partialViewResult) {
$(".wrapper").html(partialViewResult);
$(".wrapper").css('display', 'block');
});
});
});