public class User
{
private int _id;
private string _username;
public int Id
{
get { return _id; }
set { _id = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
/// <summary>
/// 返回用户的链接
/// </summary>
/// <param name="hasAt">是否包含@符号</param>
/// <returns></returns>
public string PutUserHref(bool hasAt)
{
if (hasAt)
{
return string.Format("<a href='/t/?uid={0}' class='userLink' target='_top'>@{1}</a>", this.Id, this.Name);
}
else
{
return string.Format("<a href='/t/?uid={0}' class='userLink' target=\"_top\">{1}</a>", this.Id, this.Name);
}
}
/// <summary>
/// 判断是否登录
/// </summary>
/// <returns></returns>
public static bool IsLogin()
{
if (HttpContext.Current.Session["User"] == null || HttpContext.Current.Session["Company"] == null)
{
if (HttpContext.Current.Request.Cookies["Email"] != null && HttpContext.Current.Request.Cookies["Password"] != null)
{
string email = HttpContext.Current.Request.Cookies["Email"].Value;
string pass = HttpContext.Current.Request.Cookies["Password"].Value;
return LoginByEmail(email, Common.DEncrypt.DEncrypt.Decrypt(pass));
} return false;
}
else
{ return true;
}
}
}
为什么User类里面不能有PutUserHref的属性。我这个属性很多地方的都用到的啊。绑定数据的时候方便的很啊。难道我包了一下还有错?还有就是IsLogin方法。为什么不能再类文件用Session。为什么?代码早就写好了.也能运行正常.但项目经理看到了说 不允许在User写这2种方法.说这样写,思想上就是有错误的.说类文件里面不能出现任何处理html代码的代码以及session....
解决方案 »
- 谁能告诉我下asp.net在ie下和搜狗高速下
- 请教控制器Post返回url带参的view应该怎么写?
- SQLhelper 调用存储过程失败 --excel数据导入SQL专题
- 向高手请教~!ASP.NET + SQL 打包的问题~?(进者有分~~~~~~~)
- 再现等待: Microsoft.Jet.OLEDB.4.0读取excel的权限设置问题!
- 我的IIS运行不了HTM文件?
- 页面加载时,怎么让datagrid只显示表头,而我按了查询按钮后才显示数据
- 分布式数据库查询方案哪种好?
- 代码后置中的代码 .....在线求救! 大虾请help
- 在操作Access数据库时总是说出错, 不知为什么,
- .net编辑器怎么验证是否为空
- 这个问题困扰了我好几个月了,求高手解决下吧,如何得到SqlDataSorce select的记录集合啊!!!
规范来说 实体类 加方法是不正确的 你要加方法的话就放到App_Code 的类里面去
这样才算比较合理 知道了吗?
IsLogin方法里面含有太多易变的东西了,Session["User"],Session["Company"],Cookies["Email"]。
假如我把Session["User"]改成Session["user"]了,只变了一个字母,你这方法就要重写了。你完全可以让这个方法接受两个参数,public static bool IsLogin(string email , string pass),从而把这些Session,Cookie易变的东西移出方法
2.Model层不能去读取或者写入Web上的Session或者Cookie
从减少依赖的角度来说,确实如此。
试想如果这个model还要给c/s程序用,却必须引用system.web,让人很不爽吧。
楼上见解正确。楼主有没有想到,如果是WINFORM调用你这个类,怎么办呢?
c/s里面就没有httpsessio这一说法,httpcontext.current必定会返回一个NULL
1.方法里面不能有处理Html标签的方法出现。
2.Model层不能去读取或者写入Web上的Session或者Cookie
"这个是对的.第一条:1.方法里面不能有处理Html标签的方法出现。
举个最浅显的例子.
你出身的时候穿了衣服打扮得帅帅气气没?
如果没有就不应该带"处理Html标签"第二条:2.Model层不能去读取或者写入Web上的Session或者Cookie
也举个浅显的例子.
一个USB插口能插任何支持其标准的设备,会不会限制死只能插USB移动硬盘?
这种在Model层去读取web Session与 cookie就如 USB限定了只能插USB移动硬盘
比喻很粗糙,呵呵,如有些出入,也请忍受,哈哈
我认为你的项目经理的观点是正确的,你的那两个方法应该放到Login这样的类【假如有的话】中。
你这样设计不伦不类,那两个属性不是user该包含的动作。
重温一下uml的理论吧
楼主朋友,我觉得你经理说的没错,类里面为什么一定要带入具体的HTML码呢?你不能在调用这个类的程序里面传入吗?
Session存取 应该写一个类继承Page 其他页面都继承这个类
你所加的islogin等,并不是user类所具有的,你可以再写一个类,来进行这样的判断;
因为只在user类初始化之后,islogin才有意义,如果user没有初始化,islogin就显得毫无意义!
如果你做的是界面类,那如何编程是你的权利,关联实体意义的类并不一定是数据层的实体类,在业务层、界面层都可能会出现,好的架构师可以合理的规划不同位置的类的功能,如user类在数据层的功能是增删改查,在业务层的功能是认证、操作、...,在界面层的功能可以是显示、排序..., 但目前看大多做的是一头酱紫而已,如果出问题,板子应该打在架构师及项目经理头上,不过话说回来,你作为程序员,还是应该完全按照项目经理说的做,即使他是错的,因为项目经理有很多事情要处理,这种事情对他来说是很小的无关软件生死的问题,但你如果跟他硬顶,会耗费他大量的精力跟你这个刺儿头较真,倒是真有可能在其他方面坏了大事。
为什么User类里面不能有PutUserHref的属性。我这个属性很多地方的都用到的啊。绑定数据的时候方便的很啊。难道我包了一下还有错?还有就是IsLogin方法。为什么不能再类文件用Session。为什么?代码早就写好了.也能运行正常.但项目经理看到了说 不允许在User写这2种方法.说这样写,思想上就是有错误的.说类文件里面不能出现任何处理html代码的代码以及session....
"你们经理说的是对的按照软件架构的设计思想,软件模块应该单一职责并且易于测试(其实还有很多,这里只说这两个)你的putXXX方法是输出都看的出来,但是输出的是直接控制外部的显示效果,这个显示效果不应该是由此类控制的,应该是由外部控制才对,User类的职责是提供数据,而不是数据和显示效果。此处建议你了解下MVC模式"不能出现任何处理html代码的代码以及session...."
这也是对的,你使用起来虽然很方便,但是你没有考虑到如此编程User对象就和Web容器提供的对象耦合在一起了,单元测试的时候你怎么办?解决方案可以采用IOC或参数传递依赖的方法做设计的时候不要只想目前的使用,而要全面考虑到扩展、测试、容错、弹性等的问题,努力吧。
这个应该是Tech Leader 的责任吧就楼主所提的问题,我个人是极其反对在实体类中拼接html代码的,拼接html是页面的职责。你只要想想,如果这个链接变了...