如何从操作属性获取视图文本
Posted
技术标签:
【中文标题】如何从操作属性获取视图文本【英文标题】:How can I get view text from action attribute 【发布时间】:2016-12-28 07:16:50 【问题描述】:我需要从某个动作属性中获取视图文本(不是呈现的 html)。
例如:
View (someview ) text : Hello @Name @Surname
[ActionFilter]
public SomeViewAction()
return View(someview,someModel);
public class ActionFilter : IResultFilter
public void OnResultExecuting(ResultExecutedContext filterContext)
//here I need get text "Hello @Name @Surname"
【问题讨论】:
【参考方案1】:如果你有这样的动作过滤器:
public class ActionFilterAttribute : FilterAttribute, IResultFilter
public string ViewName get; set;
public void OnResultExecuted(ResultExecutedContext filterContext)
//throw new NotImplementedException();
public void OnResultExecuting(ResultExecutingContext filterContext)
var viewResult = filterContext.Result as ViewResult;
if(viewResult != null)
var viewName = string.IsNullOrEmpty(ViewName) ? (string.IsNullOrEmpty(viewResult.ViewName) ? filterContext.Controller.ControllerContext.RouteData.Values["action"].ToString() : viewResult.ViewName) : ViewName;
if(!string.IsNullOrEmpty(viewName))
var viewEngine = ViewEngines.Engines.FindPartialView(filterContext.Controller.ControllerContext, viewName);
var razorView = viewEngine.View as RazorView;
if (razorView != null)
using (var reader = new StreamReader(filterContext.HttpContext.Server.MapPath(razorView.ViewPath)))
var markups = reader.ReadToEnd();
您将能够在控制器操作中应用过滤器:
[ActionFilter]
public ActionResult SomeView()
//var someview = "SomeView";
var somemodel = default(object);
return View(somemodel);
【讨论】:
这段代码抛出异常,因为 viewResult.ViewName = "" 我认为 您是否使用上述控制器操作进行了测试?我测试过,没有例外。 上面的代码是伪代码,但是如果我们返回View(model),没有指向视图名称,就会出现异常 是的,当然。我们应该将视图名称传递给属性。以上是关于如何从操作属性获取视图文本的主要内容,如果未能解决你的问题,请参考以下文章
从 Swift (3.1) 表格视图中动态创建的单元格获取有序的文本字段数据