ServiceStack 不渲染 Razor View,只看到 Snap Shot
ServiceStack not rendering Razor View, only seeing Snap Shot
我已经用 Bootstrap 建立了一个非常基本的 ServiceStack 项目,我试图让它看到我的主页(Razor 视图),但它没有,所以我得到了我的快照主页。以下是我创建项目的步骤:
- 新建项目"ServiceStack ASP.Net with Bootstrap"
- 打开 Nuget 服务器控制台以下载缺少的 Servicestack 包。
- 建造。
- 已将 Services.cs 重命名为 MyStuffServices.cs 并将 Model.cs 重命名为 MyStuffModel.cs
添加到'AppHost.cs':
SetConfig(new HostConfig
{
DefaultRedirectPath = "/Home"
});
将“_layout.cshtml”从 /veiws/shared 移动到 /views 文件夹
- 已将 "Home.cshtml" 添加到 /views
- 向 Home.cshtml 添加了次要文本
添加到MyStuffService.cs
public class HomeService : Service
{
[DefaultView("Home")]
public int Get(Home request)
{
return 0;
}
}
已添加到 MyStuffModel.cs:
[Route("/home", "GET")]
public class Home : IReturn<int>
{
}
- 建造。
- 运行 Internet Explorer - 获取快照页面。
这是我的 AppHost.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Funq;
using ServiceStack;
using ServiceStack.Razor;
using MyStuff.ServiceInterface;
namespace MyStuff
{
public class AppHost : AppHostBase
{
/// <summary>
/// Default constructor.
/// Base constructor requires a name and assembly to locate web service classes.
/// </summary>
public AppHost()
: base("MyStuff", typeof(MyStuffServices).Assembly)
{
}
/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{
//Config examples
//this.Plugins.Add(new PostmanFeature());
//this.Plugins.Add(new CorsFeature());
this.Plugins.Add(new RazorFormat());
SetConfig(new HostConfig
{
DefaultRedirectPath = "/Home"
});
}
}
}
这是我的 Global.asax
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace MyStuff
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
}
我没有错误,包管理器说我没有遗漏任何包。我觉得我缺少了一步,非常感谢任何帮助。
更新:在启用调试的情况下执行时,这是我用 Internet Explorer 打开时得到的结果
@inherits ViewPage
@{
ViewBag.Title = "Hello World Service";
}
<div>
<div>
<input class="form-control input-lg" id="Name" type="text" placeholder="Type your name">
<p id="helloResult" style="margin-top: 15px;font-size: large"></p>
</div>
</div>
<script>
$('#Name').keyup(function () {
var name = $('#Name').val();
if (name) {
$.getJSON('/hello/' + name)
.success(function (response) {
$('#helloResult').html(response.Result);
});
} else {
$('#helloResult').html('');
}
});
</script>
看起来这个问题可能来自现有的 MVC Razor 项模板,该模板正在添加覆盖 ServiceStack.Razor
引用的 NuGet 包 Microsoft.AspNet.Razor.3.2.2
。
避免这种情况的一种方法是在添加新视图时使用基本的 HTML 项目模板,并使用 cshtml
扩展名命名它。
这将避免来自 MVC 项模板的不需要的 NuGet 引用。
为了使这一点更加直接和明显,ServiceStackVS extension has been updated 包含一个简单的 Razor 项模板,该模板不会添加有问题的 Microsoft.AspNet.Razor.3.2.2 NuGet 包,并且只需添加一个空白 HTML页。
如果您不小心使用了 MVC 项目模板之一,要修复您的项目,您需要执行以下步骤。
- 右键单击项目 -> 管理 NuGet 包
- Select
Installed packages
在左上角选项卡 (VS 2013)
- 卸载 Microsoft ASP.NET Razor 相关包
- 卸载ServiceStack.Razor
- 重新安装ServiceStack.Razor
- 删除
<runtime>
System.Web 条目在添加 Razor 项目之前不存在。
希望对您有所帮助。
我已经用 Bootstrap 建立了一个非常基本的 ServiceStack 项目,我试图让它看到我的主页(Razor 视图),但它没有,所以我得到了我的快照主页。以下是我创建项目的步骤:
- 新建项目"ServiceStack ASP.Net with Bootstrap"
- 打开 Nuget 服务器控制台以下载缺少的 Servicestack 包。
- 建造。
- 已将 Services.cs 重命名为 MyStuffServices.cs 并将 Model.cs 重命名为 MyStuffModel.cs
添加到'AppHost.cs':
SetConfig(new HostConfig { DefaultRedirectPath = "/Home" });
将“_layout.cshtml”从 /veiws/shared 移动到 /views 文件夹
- 已将 "Home.cshtml" 添加到 /views
- 向 Home.cshtml 添加了次要文本
添加到MyStuffService.cs
public class HomeService : Service { [DefaultView("Home")] public int Get(Home request) { return 0; } }
已添加到 MyStuffModel.cs:
[Route("/home", "GET")] public class Home : IReturn<int> { }
- 建造。
- 运行 Internet Explorer - 获取快照页面。
这是我的 AppHost.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Funq;
using ServiceStack;
using ServiceStack.Razor;
using MyStuff.ServiceInterface;
namespace MyStuff
{
public class AppHost : AppHostBase
{
/// <summary>
/// Default constructor.
/// Base constructor requires a name and assembly to locate web service classes.
/// </summary>
public AppHost()
: base("MyStuff", typeof(MyStuffServices).Assembly)
{
}
/// <summary>
/// Application specific configuration
/// This method should initialize any IoC resources utilized by your web service classes.
/// </summary>
/// <param name="container"></param>
public override void Configure(Container container)
{
//Config examples
//this.Plugins.Add(new PostmanFeature());
//this.Plugins.Add(new CorsFeature());
this.Plugins.Add(new RazorFormat());
SetConfig(new HostConfig
{
DefaultRedirectPath = "/Home"
});
}
}
}
这是我的 Global.asax
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
namespace MyStuff
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
}
我没有错误,包管理器说我没有遗漏任何包。我觉得我缺少了一步,非常感谢任何帮助。
更新:在启用调试的情况下执行时,这是我用 Internet Explorer 打开时得到的结果
@inherits ViewPage
@{
ViewBag.Title = "Hello World Service";
}
<div>
<div>
<input class="form-control input-lg" id="Name" type="text" placeholder="Type your name">
<p id="helloResult" style="margin-top: 15px;font-size: large"></p>
</div>
</div>
<script>
$('#Name').keyup(function () {
var name = $('#Name').val();
if (name) {
$.getJSON('/hello/' + name)
.success(function (response) {
$('#helloResult').html(response.Result);
});
} else {
$('#helloResult').html('');
}
});
</script>
看起来这个问题可能来自现有的 MVC Razor 项模板,该模板正在添加覆盖 ServiceStack.Razor
引用的 NuGet 包 Microsoft.AspNet.Razor.3.2.2
。
避免这种情况的一种方法是在添加新视图时使用基本的 HTML 项目模板,并使用 cshtml
扩展名命名它。
这将避免来自 MVC 项模板的不需要的 NuGet 引用。
为了使这一点更加直接和明显,ServiceStackVS extension has been updated 包含一个简单的 Razor 项模板,该模板不会添加有问题的 Microsoft.AspNet.Razor.3.2.2 NuGet 包,并且只需添加一个空白 HTML页。
如果您不小心使用了 MVC 项目模板之一,要修复您的项目,您需要执行以下步骤。
- 右键单击项目 -> 管理 NuGet 包
- Select
Installed packages
在左上角选项卡 (VS 2013) - 卸载 Microsoft ASP.NET Razor 相关包
- 卸载ServiceStack.Razor
- 重新安装ServiceStack.Razor
- 删除
<runtime>
System.Web 条目在添加 Razor 项目之前不存在。
希望对您有所帮助。