如何在ASP.NET MVC'中从其PartialView更新#Layout的值;剃须刀;?

如何在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

我一直在寻找解决办法,但我还没有找到一个办法来解决这个问题。所以我希望你能给我一些线索来实现这一点

基本上,我需要从渲染的PartialView更改一个_布局的值。我使用webforms.aspx母版页和FindControl方法来实现这一点,但在MVCRazor引擎中找不到解决方案

我的布局页面有一个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>

@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并在那里加载部分视图