ASP,NET webform 与MVC 的编译问题
之前一直学习的是webform 最近在用MVC做网站。
发现个问题大家可以讨论下:
在webform程序里,编译好网站放到服务器之后,在不存在源码的情况下可以直接复制服务器中的.aspx文件并另存为一个其他的文件名,这时候因为新的文件名里的网页应用的都是编译好的dll里面已经存在的函数、类等、所以在url中输入对应的文件名是可以打开这个新的页面的。随后,我们可以在新的页面中修改样式等等。
然而在mvc中,一个页面对应一个action和view,url先经过路由查找对应的action后返回视图,而且这个视图也是固定的。也就是说我在服务器上面直接复制一个原来的页面文件(aspx、cshtml)等等,重命名之后输入新的url是不能打开这个新的页面了。因为在对应的ctroller中并没有注册新页面的action。
以上就是问题:
现在,因为涉及到网站的维护、修改或者增加页面工作不可能每次更改都要在本地编译一次再上传(维护人员懂html,css但不懂asp.net)。这样那上面我提到的问题怎么能解决呢?
不知道我把问题说明白了没有。
刚才csdn抽风了,害我重新打了一遍
[解决办法]
反正我是看明白问题的了
新增一个页面貌似不是好搞的,除非是静态页面之类的
维护的时候可以先把原来的view给backup一份的,然后直接修改的,成功了就把backup删除掉的,不成功就用原来的覆盖的,这样唯一的问题就是要在没有人用的时候修改的。
[解决办法]
可以这样。
建立一个公用的controller。
public ActionResult login(string id) //这个ID是你新页面的名称
{
return view(id);
}
protected override void HandleUnknownAction(string actionName)
{
var result=ViewEngines.Engines.FindView(ControllerContext, actionName, null);
if (result.View != null)
{
View(actionName).ExecuteResult(ControllerContext);
}
else
{
base.HandleUnknownAction(actionName);
}
}