小编glo*_*ter的帖子

在 .NET Core 解决方案中同时拥有 API 和 MVC 项目的约定

我有一个由以下项目构成的 ASP.NET Core (.NET Core 2.2) 应用程序:

  • API:这意味着代表一个 WebAPI(控制器继承ControllerBase
  • 服务:这包含 API 控制器用来访问数据库等的服务
  • 数据库:这包含常用的数据库存储库,服务层利用它来访问数据库

现在,我想添加一个与 API 对话的 UI(MVC 部分 pre-.NET-core)。这是如何通过 .NET Core 实现的,其中 MVC 和 WebAPI 是一回事?MVC 控制器/模型/视图应该是 API 的一部分吗?它应该是一个监听不同端口的新项目吗?身份验证如何适用于两者(例如,API 通常具有一些基于令牌的身份验证,UI 应用程序通常具有用户名/密码身份验证)?WebAPI 和 MVC 部分是否应该像 ASP.NET Identity 一样共享相同的身份验证?如果他们使用相同的数据库,那不会将两者紧密结合吗?

是否有某种 Microsoft 或社区建议的约定/文档来说明如何构建此类项目?

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

10
推荐指数
1
解决办法
6558
查看次数

用于数据库访问的静态类的ASP.NET MVC指南

我在ASP.NET应用程序(使用Entity Framework)中使用MVC模式的方式如下:

1)我的Models文件夹包含所有EF实体以及我的ViewModel

2)我有一个Helpers文件夹,我存储为特定应用程序创建的类.

3)在我的Helpers文件夹中,我有一个名为的静态类MyHelper,其中包含使用EF访问数据库的方法.

namespace myApp.Helpers
{
    public static class MyHelper
    {
        public static async Task<ProductVM> GetProductAsync(int productId)
        {
            using (var context = new myEntities())
            {
                return await context.vwxProducts.Where(x => x.ProductId == productId).Select(x => new ProductVM { A = x.A, B = x.B }).FirstOrDefaultAsync();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

4)我的控制器然后在必要时调用这些函数:

namespace myApp.Controllers
{
    public class ProductController : Controller
    {

        [HttpGet]
        public async Task<ActionResult> Index(int productId)
        {
            var productVM = await MyHelper.GetProductAsync(productId);
            return …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

8
推荐指数
1
解决办法
8141
查看次数

具有".container-like"布局的Bootstrap .container-fluid

我有一个用于布局的Bootstrap网站,在我的网站CSS中.container有一个额外的CSS属性.container:

.container {
    width: 1170px;
}
Run Code Online (Sandbox Code Playgroud)

我现在正试图移动到.container-fluid布局,所以我可以在我的div中使用全屏幕背景图像,但同时我仍然需要我的div的实际内容才能有类似.container的布局.到目前为止,我试图在a .container中嵌套,.container-fluid但这似乎不是最好的解决方案,也不是一个好的做法.

任何指导将不胜感激.

html css twitter-bootstrap

5
推荐指数
1
解决办法
771
查看次数

将泛型方法转换为异步导致泛型参数的问题

在一个名为的静态类中StaticHelper,我有以下泛型static方法:

public static class StaticHelper
{
    public static TResponse GenericMethod<TResponse, TRequest>(TRequest request,
                                                           Func<TRequest, TResponse> method)
    where TRequest  : BaseRequest
    where TResponse : BaseResponse, new()
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

Func<TRequest, TResponse> method是被调用的方法的名称GenericMethod.GenericMethod用作WCF方法的包装器来记录请求/响应等:

public override SomeCustomResponse Request(SomeCustomRequest request)
{
    // GenericMethod above called here
    return StaticHelper.GenericMethod(request, ExecuteRequest));
}

private SomeCustomResponse ExecuteRequest(SomeCustomRequest request)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我现在正试图创建它的async等价物:

public static async Task<TResponse> GenericMethodAsync<TResponse, TRequest>(TRequest request,
                                                           Func<TRequest, TResponse> method)
    where TRequest  : BaseRequest …
Run Code Online (Sandbox Code Playgroud)

.net c# generics task-parallel-library async-await

4
推荐指数
1
解决办法
84
查看次数

返回LINQ时的c#异步

我刚刚意识到这段代码:

    public async Task<List<Review>> GetTitleReviews(int titleID)
    {
        using (var context = new exampleEntities())
        {
            return await context.Reviews.Where(x => x.Title_Id == titleID).ToList();        
        }
    }
Run Code Online (Sandbox Code Playgroud)

...将无法工作,因为异步方法无法等待LINQ表达式.我做了一些搜索,但只找到了一些过于复杂的解决方案.

如何将返回LINQ表达式的函数转换为异步版本?

c# ado.net lambda asynchronous entity-framework

3
推荐指数
2
解决办法
5235
查看次数

“非 www 到 www”和“https”重写 web.config 中的规则,但不是 localhost ASP.NET MVC

我的web.configASP.NET MVC 5 项目中有以下重写规则:

<rule name="Redirect example.com to www.example.com and enforce https" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTP_HOST}" pattern="^[^www]" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://www.example.com/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)

该规则将非 www 重定向到 www 并将 http 重定向到 https(因此类似http://example.com/hey将重定向到https://www.example.com/hey)并且工作正常。然而localhost,它也适用于,我似乎无法解决它——我尝试了否定规则和包含|但似乎无法找到正确组合的正则表达式。我是否以错误的方式接近这个?

asp.net iis asp.net-mvc web-config url-rewriting

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

通过 MVC 部分视图注入时,Bootstrap 模式显示和隐藏事件不触发

在 ASP.NET MVC 5 中,我有一个带有 id 的引导模式,当满足某些条件时(为简洁起见省略了条件),#modal它会作为视图的一部分加载。我在 js 文件中实现了#modal'sshown.bs.modalhidden.bs.modal函数:main.js

到目前为止一切顺利,一切正常。但是,在不满足上述条件的情况下,模态将通过 AJAX 调用注入到视图的 HTML 中,作为局部视图的一部分。模态与之前提到的完全相同(相同的#modalid,相同的一切)。但是,这次shown.bs.modalhidden.bs.modal函数main.js没有触发。这是为什么?

javascript asp.net asp.net-mvc jquery twitter-bootstrap

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

chart.js(v2 +)图例中的返回百分比

Chart.js 2+不再返回饼图中图例项的百分比.

我将图例存储在我命名的html中的单独项目中#legend.然后我把它设置innerHTMLmyPieChart.generateLegend().它返回颜色和名称,但我希望能够覆盖此HTML模板以返回百分比,因此输出看起来像:

  • 一个
  • C

至:

  • A(13%)
  • B(50%)
  • C(37%)

我过去常常使用这个legendTemplate参数,但它似乎不再起作用了:

legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%> (<%=segments[i].value%>%)<%}%></li><%}%></ul>"
Run Code Online (Sandbox Code Playgroud)

javascript jquery chart.js chart.js2

2
推荐指数
1
解决办法
4279
查看次数