小编Yis*_*zer的帖子

为什么Asp.NET MVC优于Asp.NET Web窗体

我是asp.net Web Forms开发人员,我知道Asp.net MVC的基础知识.开发人员谈论MVC的优点,但我没有遇到过使用MVC而不是Asp.NET的明确或引人注目的描述.

这不是重复的问题,我已经经历了几乎所有类似的问题,但没有得到更清楚的描述更多与现实生活的例子.我很欣赏并希望用现实生活中的例子解释下面提到的每一个问题,请不要将其标记为重复.

我知道你不能用Asp.NET MVC取代Asp.NET Web Forms,我们在MVC中仍有以下优势:

  1. 关注点分离(SoC):我们也可以在asp.net中实现它,实际上在MVC中添加BAL组件我们必须将业务逻辑与控制器操作方法隔离开来.SoC只适用于MVC中的模型 - 视图 - 控制器分离吗?然后是业务逻辑呢?请提供将考虑Web窗体和MVC的真实示例.
  2. 启用对呈现HTML的完全控制:Web Forms还提供对Html的控制不是吗?它认为Web窗体中的html渲染比html辅助方法在MVC中做的更抽象.任何人都可以通过考虑Web Forms和MVC的例子来解释它,因为我在这一点上变得更加困惑.
  3. 启用测试驱动开发(TDD):如果您已将业务逻辑分离为BAL,那么您已实现TDD?是否存在MVC在webforms上的准确选择?请提供相同的示例
  4. 没有ViewState和PostBack事件:我们可以在Web窗体中管理viewstate,这需要付出很多努力,因为在MVC中我们可以通过使用Viewbag维护状态,Tempdata因为web是无状态的,所以有一些机制,MVC将其状态保持为Web的隐藏字段然后形成MVC如何在状态良好方面改进性能和页面大小?通过考虑Web Forms和MVC的例子表示赞赏
  5. 与jQuery轻松集成:"Asp.NET Web Forms为控件生成自定义ID"这是JavaScript框架易于集成的唯一考虑因素吗?如果是,那么我们可以在Web窗体的asp.net控件中使用ClientIDMode

asp.net-mvc webforms asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5

12
推荐指数
2
解决办法
3352
查看次数

如何从HttpClient.PostAsJsonAsync()生成的Content-Type标头中删除charset = utf8?

我有HttpClient.PostAsJsonAsync()的问题

除了"Content-Type"标题中的"application/json"之外,该方法还添加了"charset = utf-8"

所以标题看起来像这样:

Content-Type:application/json; 字符集= utf-8的

虽然ASP.NET WebAPI对此标头没有任何问题,但我发现我作为客户端使用的其他WebAPI不接受带有此标头的请求,除非它只是application/json.

无论如何在使用PostAsJsonAsync()时从Content-Type中删除"charset = utf-8",还是应该使用其他方法?

解决方案: Yishai的积分!

using System.Net.Http.Headers;

public class NoCharSetJsonMediaTypeFormatter : JsonMediaTypeFormatter
{
   public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
   {
       base.SetDefaultContentHeaders(type, headers, mediaType);
       headers.ContentType.CharSet = "";
   }
}

public static class HttpClientExtensions
{
    public static async Task<HttpResponseMessage> PostAsJsonWithNoCharSetAsync<T>(this HttpClient client, string requestUri, T value, CancellationToken cancellationToken)
    {
        return await client.PostAsync(requestUri, value, new NoCharSetJsonMediaTypeFormatter(), cancellationToken);
    }

    public static async Task<HttpResponseMessage> PostAsJsonWithNoCharSetAsync<T>(this HttpClient client, string requestUri, T value)
    { …
Run Code Online (Sandbox Code Playgroud)

asp.net json httpclient utf-8 asp.net-web-api

8
推荐指数
2
解决办法
5442
查看次数

如何比较TFS2013内部部署和Visual Studio Online?

我建议我的公司将我们的内部部署TFS 2008升级到更新版本.在我看来,我们有两种选择:TFS 2013(内部部署)或Visual Studio Online.

我们是一家大型(非it)业务的小型开发商,并希望在内部和外部使用源控制系统.我们选择采用Microsoft堆栈,因此我们不需要其他替代方案.

我如何将内部部署的TFS2013产品与Visual Studio Online进行比较?我关注成本,可扩展性(上下),与多方合作,持续集成构建,持续部署,单元和集成测试.我们主要开发BizTalk,WCF和一些自定义C#应用程序.

有没有人建议比较这两种产品?

tfs tfs2013 azure-devops

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

Asp.net Core 2.0 Configure.Services &lt;model&gt;()绑定不适用于用户机密

我的问题是Configure.Services<model>()没有将用户机密绑定到我的班级。服务内部注入的类始终具有null属性。

我的secrets.json看起来像这样:

{
  "OtherSection": {
    "Another": {
      "Prop": "1234"
    }
  },
  "EmailSettings": {
    "Mailgun": {
      "ApiKey": "omitted",
      "BaseUri": "omitted",
      "RequestUri": "omitted",
      "From": "omitted",
      "Smtp": "omitted",
      "SmtpUser": "omitted",
      "SmtpPass": "omitted",
      "SmtpPort": 465
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我创建了此用户设置类:

public class MailgunSettings : ISmtpDetails
{
    public string ApiKey { get; set; }
    public string BaseUri { get; set; }
    public string RequestUri { get; set; }
    public string From { get; set; }
    public string Smtp { get; set; }
    public string …
Run Code Online (Sandbox Code Playgroud)

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

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

从谷歌api反序列化json

我试图从Google Places Api反序列化这个Json响应.这是json:

{
   "predictions" : [
      {
         "description" : "Gosport, United Kingdom",
         "id" : "424e88b1dd50db4669e490c8a0ef9c411bea30bf",
         "matched_substrings" : [
            {
               "length" : 7,
               "offset" : 0
            }
         ],
         "reference" : "CjQvAAAAIlHmEkN9OGEsbUvly-cKNUup9OT_1lR1R4LZ51yNjgKxBMIQisFVOTTWl-LiiTqxEhC_p2OfnrlyacwvXk-jZj4VGhTFx0rd3p7Tk0bgCcYT7DdZlFeshQ",
         "terms" : [
            {
               "offset" : 0,
               "value" : "Gosport"
            },
            {
               "offset" : 9,
               "value" : "United Kingdom"
            }
         ],
         "types" : [ "locality", "political", "geocode" ]
      },
      {
         "description" : "Gosport Ferry Terminal, Gosport, United Kingdom",
         "id" : "298f74f3ba700467bd9a47c1212e10c8134ff503",
         "matched_substrings" : [
            {
               "length" : 7,
               "offset" …
Run Code Online (Sandbox Code Playgroud)

c# json

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

在Web API中重新验证模型

我有以下字段的模型:

-Id : Required (database generated)
-Title : Required
-Status : Required
-Comments
Run Code Online (Sandbox Code Playgroud)

当我运行一个帖子给出这个:

{
"title":"WOHOO",
"status":"STATUS"
}
Run Code Online (Sandbox Code Playgroud)

一切都运行良好.但是,当我使用以下内容运行帖子时:

{
"title":"WOHOO"
}
Run Code Online (Sandbox Code Playgroud)

我得到模型状态问题因为状态是必需的.但是,在我的post方法中它是这样的:

[Route(""), ResponseType(typeof(MyModel))]
public IHttpActionResult PostMyModel(MyModel model)
{
    // Save request in DB
    model.status = "Waiting";

    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    db.MyModels.Add(model);

    try
    {
        db.SaveChanges();
    }
    catch (DbUpdateException)
    {
        if (ModelExists(model.id))
        {
            return Conflict();
        }
        else
        {
            throw;
        }
    }

    return CreatedAtRoute("DisplayMyModel", new { id = model.id }, model);
}
Run Code Online (Sandbox Code Playgroud)

我在此方法的开头设置状态,但ModelState在请求开始时是原样的.我可以清除ModelState ModelState.Clear(),但是如何重新验证新模型?

这是在ApiController中.

c# validation model modelstate asp.net-web-api

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