Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 不使用.NETMVC会犯错误吗?_Asp.net_Asp.net Mvc_Webforms - Fatal编程技术网

Asp.net 不使用.NETMVC会犯错误吗?

Asp.net 不使用.NETMVC会犯错误吗?,asp.net,asp.net-mvc,webforms,Asp.net,Asp.net Mvc,Webforms,Microsoft web应用程序架构相关 不知道我的新web应用程序没有使用.Net的MVC是否犯了错误?我在ASP Classic中开始web开发,并随着ASP.net的每次迭代而不断前进。在过去的几个月里,我一直对ASP.NETMVC胡作非为,只是不喜欢其中的某些部分。我喜欢路由、razor和视图特定模型的概念。但在添加了一些功能之后,我的应用程序似乎变得过于复杂了——我觉得与以前的版本相比,nopCommerce和Umbraco等MVC版本的应用程序也是如此 我回到过去,基本上开始写一个

Microsoft web应用程序架构相关

不知道我的新web应用程序没有使用.Net的MVC是否犯了错误?我在ASP Classic中开始web开发,并随着ASP.net的每次迭代而不断前进。在过去的几个月里,我一直对ASP.NETMVC胡作非为,只是不喜欢其中的某些部分。我喜欢路由、razor和视图特定模型的概念。但在添加了一些功能之后,我的应用程序似乎变得过于复杂了——我觉得与以前的版本相比,nopCommerce和Umbraco等MVC版本的应用程序也是如此

我回到过去,基本上开始写一个.Net网站/MVC混合版。我为实现数据注释验证的“视图模型”创建了自己的基类;一个简单的映射器,用于将表单提交绑定到模型,并将实体属性映射到模型属性,反之亦然;为分页、选中、选中和偶数/奇数等创建扩展方法和帮助程序;在不需要查看状态的
runat=“server”
中使用诸如转发器、文本和标准HTML标记之类的控件

这种方法似乎可以让我两全其美,让我的“控制器”代码接近“视图”,并且一切都在中等信任度下工作

以下是一些示例代码:

public partial class Admin_Users_RoleAdd : System.Web.UI.Page
{
    protected class RoleAddModel : BaseModel
    {
        [Required, StringLength(100)]
        public string Name { get; set; }
        [StringLength(250)]
        public string Description { get; set; }

        public override bool Validate()
        {
            if (base.Validate() && Cortex.DB.Roles.Any(r => r.Name == Name))
                Errors["Name"] = "Already in use";
            return Errors.Count == 0;
        }
    }
    protected RoleAddModel model = new RoleAddModel();
    protected override void OnInit(EventArgs e)
    {
        if (Request.Form["Submit"].HasValue())
        {
            SimpleMapper.FormMap<RoleAddModel>(model);
            if (model.Validate())
            {
                var entity = new Role();
                SimpleMapper.Map<RoleAddModel, Role>(model, entity);
                Cortex.DB.Roles.AddObject(entity);
                Cortex.DB.SaveChanges();
                Response.Redirect("Roles.aspx");
            }
        }
        base.OnInit(e);
    }
}
public部分类管理员用户角色readd:System.Web.UI.Page
{
受保护类RoleAddModel:BaseModel
{
[所需长度(100)]
公共字符串名称{get;set;}
[长度(250)]
公共字符串说明{get;set;}
公共覆盖布尔验证()
{
if(base.Validate()&&Cortex.DB.Roles.Any(r=>r.Name==Name))
错误[“名称”]=“已在使用”;
返回错误。计数==0;
}
}
受保护的RoleAddModel模型=新RoleAddModel();
受保护的覆盖无效OnInit(事件参数e)
{
if(Request.Form[“Submit”].HasValue())
{
SimpleMapper.FormMap(模型);
if(model.Validate())
{
var entity=新角色();
SimpleMapper.Map(模型、实体);
Cortex.DB.Roles.AddObject(实体);
Cortex.DB.SaveChanges();
重定向(“Roles.aspx”);
}
}
碱基.奥尼特(e);
}
}
以及“观点”:

添加角色
名称
说明

对于这种方法,我以后会后悔吗?目前我能想到的主要问题是测试能力,但大众快车并不支持它。

你可以做任何适合你的事情。如果您是唯一的开发人员,并且永远都是,并且您深入了解您进行开发的方式,那么就去做吧

大多数方法都是关于改进长期维护的。在项目的整个生命周期中,维护占总成本的95%

但通过混合架构,您可能会设置自己的不兼容性,因为架构之间的阻抗不匹配可能很难修复

当MVC的模型绑定工作得很好时,我有点不明白为什么要编写自己的模型绑定。或者为什么您觉得需要自己进行数据注释验证。但无论如何,这是你的代码


如果你不喜欢MVC,你可以考虑使用像FuBoCVC,或者Spring .NET

< P>一些我已经参与或有同事的公司,趋势是它们都至少从经典ASP移动到.Net WebFrat,而那些正在做的.NETWebFrat现在移动到MVC!p> 一个好的、写得好的、可维护的、可靠的应用程序就是这样,而不管开发它所使用的技术是什么。您可以用任何语言或框架编写好代码和坏代码。随着时间的推移,我们获得了一些工具,使我们作为开发人员的生活变得更加轻松,但如果您是一名优秀的开发人员,那么您使用的是哪个MVC框架或XML解析器并不重要。

我不喜欢微软在MVC上的实现;使用魔术字符串,说动作然后说控制器似乎有点落后,这就像必须学习一打新的语言,因为它充满了microsolutions(路由,razor)

我非常不喜欢它,所以我开始写我自己的,但是我写得越多,我越意识到它是不灵活的,我越是修复它,它看起来就越像微软的实现

在一个垃圾版本的MVC上开发了几个小时之后,我放弃了它。我已经开始回顾设计文档和代码,并在它们的顶部进行重写

少写代码

我在大约八个小时内将我糟糕的MVC应用程序的UI层重写为MS MVC。在那之前我已经做了八个星期了。假设大部分想法已经完成,那么从头开始编写MVC可能不会那么快

我使用的几乎所有东西都是现成的,除了AuthorizeAttribute类,它没有完成我希望它完成的任务

为什么这与你的问题有关

在不需要的时候编写代码是错误的。如果您已经尝试并测试了库,请重用它们,如果您没有,请在编写自己的库之前从可信的源中查找它们。我的问题都不是新问题,我也不怀疑你的问题是否也是新问题。这些问题都是由比我们大多数人拥有更多资源的人解决的

我应该停止重新发明轮子,只编写没有预先打包的代码,这一认识的一部分是,我正在工作中进行迁移项目,律师们正在讨论
<h1>Add Role</h1>

    <div id="MainForm" class="form">
        <%= model.GetErrorMessage("Error") %>
        <form action="<%= Request.RawUrl %>" method="post">
            <div class="formField">
                <label for="Name">Name</label> <%= model.GetErrorMessage("Name") %><br />
                <input type="text" name="Name" value="<%: model.Name %>" class="required" maxlength="100" />                
            </div>
            <div class="formField">
                <label for="Description">Description</label> <%= model.GetErrorMessage("Description") %><br />
                <textarea rows="8" cols="40" name="Description" maxlength="250"><%: model.Description %></textarea>             
            </div>
            <div class="buttons">
                <input type="submit" name="Submit" value="Create" class="primary" />
                <a href="Roles.aspx">Back</a>
            </div>
        </form>
    </div>