我想从视图页面中提取MasterPage
值指令。我希望以最快的方式做到这一点,考虑到非常大的aspx
页面和非常小的页面。
我认为最好的方法是分两个阶段来做到这一点:
从视图中提取页面指令部分(使用Regex):
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
然后,提取MasterPageFile
属性中的值。
结果必须是:~/Views/Shared/Site.Master
。
我可以帮助某人实施此操作吗?我非常想只使用正则表达式,但我不是正则表达式专家。
另一件事,你认为Regex是最快的方法吗?
答案 0 :(得分:1)
这是一个与Page指令匹配的正则表达式,它将具有第1组中MasterPageFile属性的值:
<%@\s?Page.*?MasterPageFile="([^"]+)".*?%>$
你为什么需要它?如果在运行时显示页面时需要知道MasterPageFile,可以使用更简单,更快捷的方法。
答案 1 :(得分:1)
string a = "<%@ Page Language=\"C#\" MasterPageFile=\"~/Views/Shared/Site.Master\" Inherits=\"System.Web.Mvc.ViewPage\" %>";
Regex r = new Regex("<%@.*MasterPageFile=\"([^\"]*)\".*%>", RegexOptions.Compiled);
Match m = r.Match(a);
if (m.Success)
{
// what you want is in m.Groups[1]
}
Groups是一个包含匹配部分的字符串数组。组[0]是整个匹配,其余的将是正则表达式中括号内的所有内容。所以上面,我用括号包围了你想要的部分。