gpt4 book ai didi

.net - 检索 ASP.NET MVC 中的当前 View 名称?

转载 作者:行者123 更新时间:2023-12-03 07:38:57 25 4
gpt4 key购买 nike

我有一个在多个 View 页面中使用的部分 View (控件),并且我需要将当前 View 的名称传递回 Controller - 所以如果有例如验证错误,我可以重新绘制原始 View 。

一种解决方法是(在 Controller 方法中)

var viewName = "Details"; // or whatever
ViewData["viewName"] = viewName;
return(View(viewName, customer));

然后在部分本身中,将其渲染为

<input type="hidden" name="viewName" 
value="<%=Html.Encode(ViewData["viewName"])%>" />

问题是 - 是否有一些属性或语法可以用来直接检索它,而不是从 Controller 设置它?我已经尝试过显而易见的方法:

<input type="hidden" name="viewName" 
value="<%=Html.Encode(this.Name)%>" />

但这不起作用。我在这里缺少什么?

谢谢。

最佳答案

如果您不介意将代码与您正在使用的特定 View 引擎绑定(bind),您可以查看 ViewContext.View 属性并将其转换为 WebFormView

var viewPath = ((WebFormView)ViewContext.View).ViewPath;

我相信最后您会得到 View 名称。

编辑: Haacked 绝对是正确的;为了让事情变得更整洁,我将逻辑包装在扩展方法中,如下所示:

public static class IViewExtensions {
public static string GetWebFormViewName(this IView view) {
if (view is WebFormView) {
string viewUrl = ((WebFormView)view).ViewPath;
string viewFileName = viewUrl.Substring(viewUrl.LastIndexOf('/'));
string viewFileNameWithoutExtension = Path.GetFileNameWithoutExtension(viewFileName);
return (viewFileNameWithoutExtension);
} else {
throw (new InvalidOperationException("This view is not a WebFormView"));
}
}
}

这似乎正是我所追求的。

关于.net - 检索 ASP.NET MVC 中的当前 View 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com