如何在ASP.NET MVC'中从其PartialView更新#Layout的值;剃须刀;?
我一直在寻找解决办法,但我还没有找到一个办法来解决这个问题。所以我希望你能给我一些线索来实现这一点 基本上,我需要从渲染的PartialView更改一个_布局的值。我使用webforms.aspx母版页和FindControl方法来实现这一点,但在MVCRazor引擎中找不到解决方案 我的布局页面有一个ActionLink和一个如何在ASP.NET MVC'中从其PartialView更新#Layout的值;剃须刀;?,asp.net,asp.net-mvc,asp.net-mvc-4,razor,asp.net-mvc-5,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,Asp.net Mvc 5,我一直在寻找解决办法,但我还没有找到一个办法来解决这个问题。所以我希望你能给我一些线索来实现这一点 基本上,我需要从渲染的PartialView更改一个_布局的值。我使用webforms.aspx母版页和FindControl方法来实现这一点,但在MVCRazor引擎中找不到解决方案 我的布局页面有一个ActionLink和一个div标记占位符来显示部分视图,现在我需要知道如何从div标记内的部分视图页面更改Text1的值: JavaScript是我唯一可以做到这一点的方法吗? <inpu
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>
@ActionLink(“个人信息”、“个人”、“门户”,new{area=“Resume”},
新的AjaxOptions{UpdateTargetId=“result”,HttpMethod=“Post”,
InsertionMode=InsertionMode.Replace,
OnBegin=“blockUi”,
OnSuccess=“onTabChanged(此为“个人信息”)”
},
新建{@class=“text strong”})
@RenderBody()
提前感谢您的贡献。我认为Javascript就是处理这一问题的方式 您可能能够对控制器和ViewBag进行一些欺骗(比如在默认MVC项目中如何使用ViewBag设置页面标题) 您也可以将其设置为某个全局变量或其他内容,并让您的局部视图更改该变量 不过,这两种解决方案都需要重新加载页面 但是使用javascript可能是最好的,您可以在
onTabChanged
函数中使用它
<script>
function onTabChanged(param1, param2) {
var el = document.getElementById("Text1");
el.value = "Whatever you want here";
}
</script>
函数onTabChanged(参数1、参数2){
var el=document.getElementById(“Text1”);
el.value=“您在这里想要什么”;
}
我认为最简单的方法是在控制器/视图/局部视图中使用ViewBag。在WebForms中,您可以使用FindControl方法,因为已进行回发。因此,整个页面再次呈现
在您发布的示例中,我假设Ajax.ActionLink发出的更新div结果的请求返回的视图可能使用相同的布局,但处于另一个上下文中,因此您无法访问触发Ajax.Action链接的呈现页面中的相同输入文本
因此,如果您有多个Ajax.ActionLink更新
,您需要在onTabChanged上处理成功方法,就像@Kyle Gobel建议的那样。您必须通过jquerytanks来获取线索,你认为这是我能做到这一点的唯一方法吗?在mvc中,你必须坚持使用jquery,或者在主布局中创建container div并在那里加载部分视图