我一直在寻找解决方案,但我还没有找到解决问题的方法。所以我希望你能给我一些线索来实现这一目标。
基本上我需要从渲染的PartialView中更改_Layout的值。我使用webforms .aspx母版页和FindControl方法来做到这一点,但我找不到在MVC Razor 引擎中执行此操作的解决方案。
我的布局页面有一个ActionLink和一个div
标记占位符来显示部分视图,现在我需要知道如何从DIV标记中的部分视图页面更改Text1的值:
JavaScript是我能做到这一点的唯一方法吗?
<input id="Text1" type="text" />
<div>
@Ajax.ActionLink("Personal Info", "Personal", "Portal", new { area = "Resume" },
new AjaxOptions { UpdateTargetId = "result", HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
OnBegin = "blockUi",
OnSuccess = "onTabChanged(this, 'Personal Information')"
},
new { @class = "text-strong" })
</div>
<div id="result">@RenderBody()</div>
提前感谢您的贡献。
答案 0 :(得分:0)
我认为Javascript就是这样处理的方式。
您可能可以使用控制器和ViewBag做一些技巧(就像在默认的MVC项目中使用ViewBag设置页面标题一样)。
您也可以将其设置为某个全局变量或其他内容,并使您的部分视图更改该变量。
这两种解决方案都需要重新加载页面。
但是使用javascript可能是最好的,你可以在onTabChanged
函数中完成。
<script>
function onTabChanged(param1, param2) {
var el = document.getElementById("Text1");
el.value = "Whatever you want here";
}
</script>
答案 1 :(得分:0)
我认为最简单的方法是使用您在控制器/视图/局部视图中使用的ViewBag。
答案 2 :(得分:0)
在WebForms中,您可以使用FindControl方法,因为发布了PostBack。所以整个页面再次呈现。
在您发布的示例中,我假设Ajax.ActionLink发出的更新div结果的请求返回一个可能使用相同布局的视图,但是在另一个上下文中,因此您无法访问来自呈现页面的相同输入文本,其中触发了Ajax.Action链接。
所以,如果你有多个更新<div id="result">
的Ajax.ActionLink,你需要在onTabChanged上处理成功方法,就像@Kyle Gobel建议的那样。