我正在使用mvc 2010 Express在c#中创建一个应用程序,并且我有一个由 3 个不同的表组成的视图:和. 每个市场都有许多国家,每个国家可以有多个分析(由 a 定义)。tmarkets
tcountries
tanalysis
code
我有一个视图来选择要咨询的分析(它将代码传递给控制器),然后在下一个视图中我有一个不同市场的下拉列表(以便用户可以看到该市场国家的分析该分析)。我需要有两种不同的观点,因为我还需要在第二种观点中有其他选择。
Inform
控制器:
public ActionResult Filter(string id)
{
var merc = from a in dre.v_AnalysisCountry
where a.Code == id
select a;
var query1 = merc.Select (a => new { a.Code,a.Market}).Distinct().OrderBy(a => a.Market);
ViewBag.mar = new SelectList(query1.AsEnumerable(), "Code", "Market");
return View();
}
查看Filter
:
<script type="text/javascript">
$(function () {
$("#Market").change(function () {
var actionUrl = $('#TheForm1').attr('action') + '/' + $('#Market').val();
$('#TheForm1').attr('action', actionUrl);
$('#TheForm1').submit();
});
});
</script>
@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1"})){
@Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")
}
为了用不同的市场填充下拉列表,我的咨询从code
和market
本身中选择它们,以便稍后我可以将分析代码传递给控制器以进行下一个view
。
问题是我还需要将市场传递给下拉列表controller
中的用户,而不仅仅是传递给用户。我试图做这样的事情:
@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1", id2 = @ViewBag.idAn })){
@Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")
}
然后在我的controller
:
var idAnalysis = (from v in dre.v_AnalysisCountry
where v.Code == id
select v.IdAnalysisCountry).FirstOrDefault();
ViewBag.idAn = idAnalysis;
但它不起作用。
-------------------------------------------------- --------编辑----------------------------------------- -------------------------
我在视图中 添加了一个隐藏属性:
@{
string code= ViewBag.code;
}
@using (Html.BeginForm("FilterAnMark", "Inform", FormMethod.Post, new { id = "TheForm1"})){
@Html.DropDownList("Market", (SelectList)ViewBag.mar, "Select a market")
@Html.Hidden("code", code)
}
它可以工作,因为它将代码传递给下一个视图。这里的问题出现在下一个视图中。我正在使用WebGrid来显示国家/地区。
WebGrid grid = new WebGrid(Model, defaultSort: "Market", rowsPerPage: 15);
当用户试图显示表格的第二页时,它会显示一个空白表格,因为它不记得这个隐藏的属性。
如果您能帮助我解决另一个解决方案或修复我找到的部分解决方案,我将不胜感激。提前致谢!