相关疑难解决方法(0)

Asp.Net Webforms与Asp.Net WebSite(Razor)和Asp.Net MVC

我认为微软必须有理由用RAZOR语法增强ASP.Net.

在visual studio 的Create New Website Project对话框中,还有另一个创建ASP.Net(Razor)的选项.我第一次遇到Razor一词是因为当我读一本关于Asp.Net MVC的书时,我不知道它存在于ASP.Net

在此输入图像描述

我知道Razor的语法是什么,在MVC 3中引入.在问这个问题之前,我决定为ASP.Net(Razor)创建一个测试项目,看看它与普通的ASP.Net webforms和ASP.Net有什么不同. MVC.我发现没有像我们在MVC中那样的模型/视图/控制器文件夹.

我发现Master页面的指定方式不同,Master页面更清晰,没有更多 <asp:ContentPlaceHolder />

但我的问题是:

  • 我注意到它使用了.cshtml,没有更多的代码隐藏吗?
  • ASP.Net(Razor)和ASP.Net MVC之间的异同
  • 它可以扩展到像ASP.Net MVC这样的功能,例如添加Controller?View/Model,Custom Routing我猜?
  • 为什么我们有ASP.Net MVC时会存在这种情况?难道这不会让人不愿意转向ASP.Net MVC吗?
  • 为什么你会选择ASP.Net + Razor而不是ASP.Net MVC?

更新: 特别是ASP.NET Web页面旨在使已经了解HTML的人们可以轻松地向其页面添加服务器处理.对于学生,业余爱好者,一般不熟悉编程的人来说,这是一个不错的选择.对于具有非ASP.NET Web技术经验的开发人员来说,它也是一个不错的选择

更新 ASP.NET网页 ASP.NET Web Pages面向那些想要一个简单的Web开发故事的开发人员,这与PHP一致.在Web页面模型中,您可以创建HTML页面,然后将基于服务器的代码添加到页面中,以便动态控制标记的呈现方式.Web Pages专门设计为轻量级框架,对于了解HTML但可能没有广泛编程经验的人来说,它是进入ASP.NET的最简单的入口点 - 例如,学生或业余爱好者.对于了解PHP或类似框架的Web开发人员来说,这也是开始使用ASP.NET的好方法.

Asp.Net网页

拜托,我需要你的技术意见.谢谢.

.net asp.net asp.net-mvc razor

26
推荐指数
3
解决办法
3万
查看次数

在控制台应用程序中使用Razor的最佳方法是什么

我知道之前已经提出了类似的问题,但唯一的答案是六年了,人们提到的项目似乎没有被维护.

我想在控制台应用程序或类库中使用Razor来呈现HTML.我还想在.cshtml文件中使用Intellisense.

目前,我可以通过以下方式对此进行评审:

  • 创建控制台应用.
  • 添加.cshtml文件.
  • 在"属性"中,将属性设置Custom ToolRazorTemplatePreprocessor

这会导致识别Razor语法.所以,如果你有Test.cshtml,它会生成一个名为的类Test,你可以这样使用:

var test = new Test();
test.Model = "Hi there";
var html = test.GenerateString();

Console.WriteLine(html);
Run Code Online (Sandbox Code Playgroud)

这对我的目的来说已经足够好了.但是,.cshtml文件中的实际编码体验非常糟糕:

  • 整个地方都有红色的波浪形抱怨:
    • 无法使用,var因为它是C#2.
    • 说找不到各种类型的类型或命名空间.
    • 从其他库导入的类型尤其如此.
  • @model关键字无法识别.
  • Intellisense有时会起作用,有时却不起作用.

奇怪的是,如果你忽略所有这些错误,HTML实际上是正确生成的,包括使用Razor引擎抱怨的库和@model关键字.但是,这会导致严重的心理混乱,因为如果您有任意数量的.cshtml文件,您很快就会遇到成千上万的这些错误与真正的错误混在一起.

我能做些什么来使实际的Razor编码体验更像是在ASP.NET Web应用程序中工作吗?

c# console-application razor

11
推荐指数
2
解决办法
1531
查看次数

Resolver或ServiceProvider使用ICompositeViewEngine所需的依赖项

我试图在ASP.NET Core MVC中使用ICompositeViewEngine替换System.Web.Mvc中的ViewEngine,因为它在.NET Core中不再可用.我通常尝试在此项目中将webform从ASP.NET迁移到ASP.NET Core.

我找到了以下解决方案:MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?我相信这可以解决我的问题.我还在github问题中找到了与ServiceProvider类似的引擎创建:https://github.com/aspnet/Mvc/issues/3091

但是,我不确定我可能会缺少哪些依赖项或框架,因为我是.NET的新手.我有以下命名空间:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
Run Code Online (Sandbox Code Playgroud)

我认为这可能与我的问题有关.

我原来的代码是:

    public static string RenderPartialToString(Controller controller, string viewName, object model)
    {
        controller.ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return "document.write('" + sw.GetStringBuilder().Replace('\n', ' ').Replace('\r', ' ').Replace("'","\\'").ToString() + "');";
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用以下任一方法:

 var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
 var …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-core-mvc asp.net-core

3
推荐指数
1
解决办法
1175
查看次数