【发布时间】:2014-12-16 16:07:52
【问题描述】:
控制器:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class ExperimentalController : Controller
{
public ActionResult ReloadTest1()
{
string temp = DateTime.Now.ToString();
ViewBag.Time = temp;
return View();
}
public PartialViewResult ReloadTest1Partial()
{
string temp = DateTime.Now.ToString();
ViewBag.Time = temp;
return PartialView();
}
}
查看:
@{
ViewBag.Title = "ReloadTest1";
string time = this.ViewBag.Time;
ViewData["date"] = time;
ViewBag.TheTitle = "test";
}
<h2>ReloadTest1</h2>
<select id="iSelect" name="iSelect" >
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<div id="myPartialViewContainer">
@{Html.RenderPartial("_ReloadTest1Partial", null, new ViewDataDictionary { {"vb", ViewBag}});}
</div>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script>
$('#iSelect').on('change', function () {
$("#myPartialViewContainer").load('@(Url.Action("ReloadTest1Partial", "Experimental", null, Request.Url.Scheme))')
})
</script>
局部视图:
@{
var vb = ((dynamic)ViewData["vb"]);
}
<div>
<span>@vb.Time</span>
</div>
什么不起作用:
将 viewbag/viewdata 直接从控制器传递到局部视图,因为 mvc 不接受这种情况。
什么是有效的:
从上面的代码可以看出,局部视图通过 Html.RenderPartial 方法和 viewbag 传下来一次获取数据。 重新加载确实对下拉列表中所选对象的更改起作用
需要什么:
我需要在重新加载或之后将数据传递给部分视图,这主要是一个测试设置,但我最终希望能够根据选择值更新表。
如果有人能够给我一个工作示例,请这样做。
【问题讨论】:
-
您可以展示您的
ReloadTest1Partial操作吗? -
控制器中已经存在
标签: javascript asp.net-mvc view partial