我将MVC 2项目升级到MVC 3.如何在现有项目中将默认视图引擎设置为Razor?
编辑:对不起,我还不清楚.我想让Razor成为Add View对话框中的默认类型.
我必须创建一堆静态html文件作为console/winform作业.当前解决方案使用字符串构建器.使用ASP.NET-MVC和强类型视图页面(System.Web.Mvc.ViewPage)后,我想知道是否可以利用这些视图页面并将它们输出到流或文件而无需构建ASP.NET解决方案.
本质上我想创建视图页面,传入强类型对象,并呈现结果.
我也对其他视图引擎开放.
如果这最终需要带来整个厨房水槽,那么我可以做一个字符串建设者的风格.
谢谢.
我正在使用最终版本的asp.net mvc开发高负载解决方案.最近,我们的团队注意到,服务器响应客户端的大部分时间都用于页面呈现.简单的时间表如下所示:
Page start - 1.8608363s
Render module 1140/Modules/Owners start - 1.86859s
Render module 1140/Modules/Owners Complete - 1.9081751s
Render module 829/Modules/Links start - 1.9081788s
Render module 829/Modules/Links Complete - 2.3380648s
Render module 1036/Modules/Advertisement start - 2.3459101s
Render module 1036/Modules/Advertisement Complete - 2.3482298s
Render module 1110/Modules/Goodies start - 2.3482322s
Render module 1110/Modules/Goodies Complete - 2.6300744s
Render module 1004/Modules/TopicLinks start - 2.6300784s
Render module 1004/Modules/TopicLinks Complete - 3.8852529s
Render module 1048/Modules/News start - 3.8927697s
Render module 1048/Modules/News Complete - 4.4958795s
Render module …Run Code Online (Sandbox Code Playgroud) 假设我写了一个自定义属性......
public class SpecialActionFilterAttribute : System.Web.Mvc.ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// set some parameters here.
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
}
}
Run Code Online (Sandbox Code Playgroud)
然后我创建一个自定义ViewEngine,并覆盖FindView/FindPartialView ...
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
// how can I get those parameters here?
return base.FindView(controllerContext, viewName, masterName, useCache);
}
Run Code Online (Sandbox Code Playgroud)
我希望能够利用自定义属性将各种"标志"传递给自定义视图引擎.这是可能吗?
我有一个场景,用户可以选择单击"下载"按钮,我应该创建一个包含历史数据的csv文件,然后让用户在本地保存文件.由于我之前没有这样做,我开始四处寻找如何做到这一点,并且基本上遇到了自定义视图引擎和自定义操作结果.
我现在的问题是这些的利弊是什么?什么是首选方式?
CSV文件基本上只包含标题和数据(最多约15列/字段),包含几千行.所以没什么特别的.
我试图通过使用路径来检查是否存在一些视图.但即使它们确实存在,也无法找到它们.
private string SelectFirstView(ControllerContext ctx, params string[] viewNames)
{
return viewNames.First(view => ViewExists(ctx, view));
}
private bool ViewExists(ControllerContext ctx, string name)
{
var result = ViewEngines.Engines.FindView(ctx, name, null);
return result.View != null;
}
Run Code Online (Sandbox Code Playgroud)
以及我如何尝试查找视图:
var viewName = SelectFirstView(ctx, statusCodeName,
"~/Error/" + statusCodeName,
"~/Error/General",
"~/Shared/Error",
"Error");
Run Code Online (Sandbox Code Playgroud)
请注意,"~/Shared/Error"并且"Error"是相同的视图,但只找到后者.
ViewEngineResult FindView方法在asp.net mvc中扮演什么角色,我们可以在此方法中更改视图位置.我可以理解VirtualPathProvider,但对FindView方法有些困惑.
帮助将不胜感激.
干杯
在尝试返回View时,使用我的MVC 4应用程序时出现偶发错误.
在这种特殊情况下,我即将返回一个View return View("Home", model);,这就是我获取msg的地方.当您不断进行测试和调试时,它似乎偶尔也会发生,我认为View Engine会疯狂.例如,在此之前,我正在执行一个简单的视图,并说当它一直存在时无法找到它.结合清除缓存,重新启动等,并执行相同的确切逻辑后,它工作.
所以,我不知道如何使用View Engine解决这个问题.在我回到View之前,我可以向你保证我的模型中有记录.我不能在我的电脑上附上这张表格上的丝网印刷品 - 没有选择.
所以,可怕的问题是:如何解决这个问题,它不会偶尔发生这样的问题?这是一个严重的问题,希望能够解决这个问题....
我查看了Scott Hanselmans nuget包的预编译视图等,但似乎过于复杂和额外的工作.我想知道我能做些什么.
任何帮助将非常感激....
这是我的Globla.asax文件:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以请回答,我将不胜感激,因为这将使我们正在努力的MVC应用程序停止!
我尝试添加.DataTokens.Add("area", "YOURAREANAME");到最后MapRoute,但我不知道用什么来代替字符串.
另外,我不知道为什么要这样做(如果它会修复它)并需要某人的解释......
为另一个想要签出控制器代码的人添加了代码.
[HttpPost]
public ActionResult Refresh(ViewModelTemplate_Guarantors model)
{
try
{
model.Error = string.Empty;
bool dbHasRows …Run Code Online (Sandbox Code Playgroud) 我试图单元测试一个具有controllercontext参数的void方法,还有一些用于发送电子邮件.电子邮件模板使用视图引擎渲染局部视图 我模拟了controllercontext.因此,渲染视图会抛出异常,因为ControllerContext具有null值.
public static string RenderViewToString(ControllerContext context, string viewPath, object model, bool partial = false)
{
var viewEngineResult = partial ? ViewEngines.Engines.FindPartialView(context, viewPath) : ViewEngines.Engines.FindView(context, viewPath, null);
if (viewEngineResult == null)
throw new FileNotFoundException("View cannot be found.");
var view = viewEngineResult.View;
context.Controller.ViewData.Model = model;
var result = String.Empty;
using (var sw = new StringWriter())
{
var ctx = new ViewContext(context, view,
context.Controller.ViewData,
context.Controller.TempData,
sw);
view.Render(ctx, sw);
result = sw.ToString();
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 我是Node js的新手,遇到了这个hbs模块,并在此部分代码中看到了它,例如:
app.set('view engine', 'html');
app.engine('html', require('hbs').__express);
Run Code Online (Sandbox Code Playgroud)
谁能解释一下什么是hbs(车把-但是它有什么作用)?以及为什么如果第一行已经说过将以html格式打开文件,则需要第二行
谢谢!
viewengine ×10
asp.net-mvc ×8
asp.net ×2
c# ×2
actionresult ×1
csv ×1
express ×1
html ×1
mocking ×1
node.js ×1
performance ×1
unit-testing ×1
view ×1