相关疑难解决方法(0)

为什么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
查看次数

BestPractice - 使用域模型混合视图模型

将视图模型与域模型混合是否合理?

所以即视图模型对象包含一些域模型对象(不是相反的方式!)

asp.net-mvc model domain-model viewmodel

9
推荐指数
2
解决办法
3856
查看次数

MVC3视图模型与实体框架模型

不知道怎么解释这个,但是这里......

我使用EF 4.3构建了代码优先数据模型.其中一个类"地址"包含典型的地址数据,街道,城市,州等.模型中的其他类包含"地址"类的实例.

问题.将使用不同的视图收集/呈现数据,其中一些将需要地址字段,而另一些则不需要.

我可以构建不同的视图模型,每个模型都具有必要的验证属性,并在数据模型和视图模型之间来回复制数据,但这似乎是错误的.

我错过了什么?必须有一种更聪明的方法来做到这一点.

谢谢你的帮助,吉米

entity-framework asp.net-mvc-3

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

如何使用模型项和ASP.net MVC 3中的表单输入进行简单计算?

我是编程和ASP.net MVC 3的新手,所以不要对我对此缺乏了解感到惊讶.好吧,我想要乘以两位小数,一位十进制来自用户填充的形式,另一位十进制来自Model类(从数据库中获取).

我有两个名为RATE&PROJECTMATERIAL的Model类.RATE类有一个名为Amount的项目,表示一个Rate的数量,PROJECTMATERIAL类有一个项目数量.类是相关的,我希望能够说变量1 =数量*Rates.amount并将variable1返回到我的索引,删除,详细信息视图.我不想将variable1存储到我的数据库,但我只想在我的视图中显示.....但我不知道如何以及在哪里做

项目材料类的代码..

public class ProjectMaterial
{
    public int ProjectMaterialID { get; set; }

    [Required]
    [Display(Name = "Scope Name")]
    public int? ScopeID { get; set; }

    [Required]
    [Display(Name = "Rate Code")]
    public int? RateID { get; set; }

    [Required]
    [Display(Name = "Quantity")]
    public decimal Quantity { get; set; }


    public virtual Scope Scopes { get; set; }
    public virtual Rate Rates { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

范围类的代码..

public class Rate
{ …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-3

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

我应该将实体(持久性)对象转换为DTO对象吗?

我的项目分层如下:

DAL (Entity)- > BLL (DTO)- > ApplicationComponent (ViewModel)

将要ApplicationComponent访问的application()的多个组件BLL。组件包括Windows服务,Web服务,Web API和MVC控制器。

我改造NHibernate Entity的对象DTO对象,而从通过他们DALBLL。在将此状态传递给时ApplicationComponentBLL再次将其转换为ViewModel

这可以帮助我区分关注点以及如何在每一层中处理数据。我不赞成NHibernate Entity出于以下原因返回对象:-

  • 数据暴露给UI我想要隐藏的(或仅在需要时暴露),例如密码,用户类型,权限等。
  • 在引用/联接上,NHibernate在访问属性时执行附加查询,这将使延迟加载的使用无效。
  • 暴露给(of Entity)用户的不必要数据会造成错误的混淆和漏洞。
  • 持久性实现泄漏到BLL/中UIEntity不适用于UI。它不能UI在所有情况下都可用。
  • 我们在属性上使用属性DTO进行用户输入验证,看起来有点奇怪Entity

我使用这种方法面临以下问题:-

  • 最大和明显的问题是具有相似成员和功能的冗余对象。
  • 我必须在每一层中编写映射器方法以转换对象。可以通过使用AutoMapper或类似方法将其最小化;但是它不能完全解决问题。

问题:-

  1. 是否过度分离,应该避免(至少将其最小化)?
  2. 如果这种方法是正确的,那么我看不到任何简单的方法可以完全绕过我上面提到的两个问题。请提出建议。
  3. 如果此方法不正确,请提出更正建议。

参考文献:

  1. Link1建议将Entity对象转移到视图,在我看来这不是一个好主意。
  2. Link2建议Entity …

c# mapping nhibernate orm data-access-layer

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

将EF实体作为域模型与视图模型的视图解耦时?

我正在尝试了解我的MVC2网站的最佳架构.

由于我一直在尝试使用Entity Framework将数据输入和输出数据库,我开始意识到我到目前为止构建的简单域模型并未映射到我计划视图的所有需求.所以我正在考虑遵循这个问题的对应答案:为什么两个类,视图模型和领域模型?.

但是,在域模型和EF模型之间我可以看到的似乎存在少量收益的冗余,我甚至无法理解概念差异.我没有要求在未来切换数据源,我也不认为需要切换我的ORM解决方案.

问题:
如果我遵循这种模式,那么,由于我使用的是实体框架,我不应该只使用我的EF实体直接作为域模型服务吗?(注意:我没有想过通过"怎么样",但是答案也很受欢迎.)或者我仍然建议管理一组单独的域模型?

entity-framework viewmodel asp.net-mvc-2

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

如何在ASP.NET MVC中将字符串类型的模型属性呈现为复选框

我想在MVC视图上显示一个字符串类型作为复选框,但在HTTP帖子上将其作为字符串类型返回.问题是它在HTTP Post上返回false.以下是我的代码:

视图:

  @model List<Car>

        foreach(var car in Model){
       bool isFourWheel = false;
        if(bool.TryParse(car.IsFourWheel, out isFourWheel){
        @Html.CheckBox("IsFourWheel", isFourWheel); //need to be rendered as checkbox, but returns string type on HTTP POST
    }
     }
Run Code Online (Sandbox Code Playgroud)

模型:

public class Car
    {
        public string IsFourWheel { get; set; } //bad naming, but it can contain any type, include boolean
    }
Run Code Online (Sandbox Code Playgroud)

控制器:

 public ActionResult Index()
        {


            var cars = new List<Car>(){ new Car(){IsFourWheel = "true"},new Car(){IsFourWheel = "false"} };
            return View(cars);
        }

        [HttpPost]
        public ActionResult …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

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