首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

初学MVC3,有些疑惑,请前辈解惑一下:)解决办法

2012-05-20 
初学MVC3,有些疑惑,请前辈解惑一下:)1:MVC项目中既有视图,又有控制器,那么,应该按几层来搭建整个项目呢?分

初学MVC3,有些疑惑,请前辈解惑一下:)
1:MVC项目中既有视图,又有控制器,那么,应该按几层来搭建整个项目呢?分别对应什么?

2:存储库,接口的实现,作用体现在哪里?

3:能够通过EF去查询数据库中的View吗?难道复杂的关联查询每次都要在后写用linq或者lamda写吗?
原先在数据库中执行的函数,或者存储过程,现在放到项目中实现,不是会增加服务器的压力吗?

4:控制器,统一放在MVC下的Controllers文件夹中;视图,统一放在Views文件夹中。那么,整个系统的功能模块的层次性,或者叫级别性,无法做到一目了然吗?比如 组织机构/{用户管理,部门管理,职位管理}

希望能有人帮我

另外,顺便带个问题求解决~~

JScript code
function ChangePwd() {            window.showModalDialog('../Account/ChangePassWord', '', 'dialogWidth:650px;dialogHeight:340px;dialogTop:' + new String((screen.height - 420) / 2) + 'px;dialogLeft:' + new String((screen.width - 650) / 2) + 'px;resizable:no;status:no;scroll:no;help:no;unadorned:yes;');        }

用JS弹出一个窗口进行密码的修改

HTML code
@Html.BeginForm("ChangePassWord","Account", FormMethod.Post)                                <table width="100%" border="0px" cellspacing="0px" cellpadding="0px">                                    <tr>                                        <td width="20%" height="30px" align="right" bgcolor="#f2f2f2" class="left_txt2">                                            用户名:                                        </td>                                        <td width="3%" bgcolor="#f2f2f2">                                            &nbsp;                                        </td>                                        <td width="32%" height="30px" bgcolor="#f2f2f2">                                            @Html.TextBoxFor(m => m.UserName, new { name = "txt_username", size = "20",@readonly="readonly" })                                        </td>                                        <td width="45%" height="30px" bgcolor="#f2f2f2" class="left_txt">                                            准备修改密码的所属帐号                                        </td>                                    </tr>                                    <tr>                                        <td height="30px" align="right" class="left_txt2">                                            当前密码:                                        </td>                                        <td>                                            &nbsp;                                        </td>                                        <td height="30px">                                            @Html.TextBoxFor(m => m.OldPassword, new { name = "txt_oldpassword", size="20" })                                        </td>                                        <td height="30px" class="left_txt">                                            当前密码&nbsp;&nbsp;<span style=" font-size:12px; color:Red;">@Html.ValidationMessageFor(m => m.OldPassword)</span>                                        </td>                                    </tr>                                    <tr>                                        <td height="30px" align="right" bgcolor="#f2f2f2" class="left_txt2">                                            新密码:                                        </td>                                        <td bgcolor="#f2f2f2">                                            &nbsp;                                        </td>                                        <td height="30px" bgcolor="#f2f2f2">                                            @Html.TextBoxFor(m => m.NewPassword, new { name = "txt_password",size="20" })                                        </td>                                        <td height="30px" bgcolor="#f2f2f2" class="left_txt">                                            需要设置的新密码&nbsp;&nbsp;<span style=" font-size:12px; color:Red;">@Html.ValidationMessageFor(m => m.NewPassword)</span>                                        </td>                                    </tr>                                    <tr>                                        <td height="30px" align="right" bgcolor="#f2f2f2" class="left_txt2">                                            重新输入新密码:                                        </td>                                        <td bgcolor="#f2f2f2">                                            &nbsp;                                        </td>                                        <td height="30px" bgcolor="#f2f2f2">                                            @Html.TextBoxFor(m => m.ConfirmPassword, new { name = "txt_password2",size="20" })                                        </td>                                        <td height="30px" bgcolor="#f2f2f2" class="left_txt">                                            重新输入新密码&nbsp;&nbsp;<span style=" font-size:12px; color:Red;">@Html.ValidationMessageFor(m => m.ConfirmPassword)</span>                                        </td>                                    </tr>                                    <tr>                                        <td height="17px" colspan="4" align="right">                                            &nbsp;                                        </td>                                    </tr>                                    <tr>                                        <td height="30px" colspan="4" class="left_txt2">                                            <table width="100%" style="height: 40px;" border="0px" cellpadding="0px" cellspacing="0px">                                                <tr>                                                    <td colspan="4" align="center">                                                        <input id="btn_save" type="submit" value="" style="width: 85px; height: 28px;                                                            background-image: url(../../images/save.gif); cursor: :pointer; border-width: 0px;" />                                                        <input id="btn_close" type="button" value="" style="width: 85px; height: 28px; background-image: url(../../images/close.gif);                                                            cursor: :pointer; border-width: 0px;" onclick="window.close();" />                                                    </td>                                                </tr>                                            </table>                                        </td>                                    </tr>                                </table> 


修改密码视图的代码,表单提交后,执行Account控制器中的方法,如下:

C# code
[HttpPost]        public ActionResult ChangePassWord(ChangePasswordModel model)        {            if (ModelState.IsValid)            {                EFDbContext db = new EFDbContext();                var u = db.User.Where(s => s.UserID == CurrentUserInfo.UserID);                u.FirstOrDefault().Password = model.NewPassword;                db.SaveChanges();                return View(model);//请问这里该怎么写?            }            else            {                return View(model);            }        }

密码修改完成后,应关闭子窗口,但是不知道该怎么写。

分较少,就这么点了。。辛苦各位了

[解决办法]
1.没有固定的答案,依情况而定,如果你认为有必要,可以把控制器分离出来作为单独的组件。
2.依赖倒置,高层并不依赖于低层,而是依赖于抽象(接口)
3.EF也可以执行存储过程,MVC也不一定要使用ef或者其他orm,你用ado.net也是可以的
4.这是asp.net mvc框架的约定,有句话叫做约定胜于配置,当然你可以不遵循这些约定
[解决办法]
response.write("<script>window.close()</script>");
response.end();
return null
控制器里面

或者html.raw(TempData["CPW"] )

热点排行