CFXIXI工作室首页
CF西西的博客 | .Net MVC

.Net MVC3 Razor if else 怎么写

14. 二月 2013
参考:http://www.csharpcity.com/2011/ifelse-statements-in-mvc3-with-razor/ 简单的可以:   @if(2<1) { <p>1</p> } else { <p>2</p> }   对比MVC2怎么转换: In ASP.NET MVC2, if we wanted to write some conditional view code (such as displaying a link if a user is logged in), we could do it like so:   <% if (User.Identity.IsAuthenticated) { %> <%= "Your XYZ is " + ... %> <% } else { %> <%= "[not logged in]" %> <% } %>   How do we “translate” this into a Razor-style if-statement? Very simply:   @if (User.Identity.IsAuthenticated) {   Your XYZ is ... } else {   [not logged in] }   What’s cool about this is a complete lack of <% and %>! This is precisely what Scott Guthrie mentioned in his introduction to MVC3 that Razor enables a very fluid coding flow. You don’t need to stop and think about where to write angle brackets; you just write code, write presentation logic, and it works!

.Net MVC

.Net Mvc3 Razor命令(对比mvc2)

9. 二月 2013
@Html.Partial("_LogOnPartial") 渲染一个部分视图   <script src="@Url.Content("~/Content/js/modernizr.com-custom-2.6.1-01.js")" type="text/javascript"></script> 引用一个script   <li>@Html.ActionLink("Home", "Index", "Home")</li> 定义一个文字home并带有链接Home/Index   RenderBody() 渲染一个完整的视图view   ViewBag.Message = "Welcome to ASP.NET MVC!"; <h2>@ViewBag.Message</h2> 从服务器端传输一段文字   ViewData["aaa"] = "Welcome to ASP.NET MVC!"; @ViewData["aaa"] 使用ViewData容器向页面传输一段文字       对比mvc2 中   <% Html.RenderPartial("LogOnUserControl"); %> 渲染一个模板文件   <% Html.RenderAction("HomeSideBar", "Shared"); %> 渲染一个部分视图  

.Net MVC

关于mvc3 cshtml代码不变颜色的问题

4. 二月 2013
网上也查了一些资料,有的说要重装framework,有的说要重装mvc3组件 楼主重装了mvc3组件后发现依然问题存在们也许重装framework能完美解决,不过楼主不想浪费时间在这种小问题上面。 折中办法先用html编辑器去识别cshtml吧 去到tool——>option——>text editor——>是不是发现有一个extensioton拓展的东西啊,在里面添加cshtml,然后选择html编辑器去识别,暂时先这样吧(像@符号黄色的部分没有显示)。 觉得不够完美的话还是重装framework,百度知道上有人确实解决了这个问题。

.Net MVC

.Net MVC3中改变链接的颜色

3. 二月 2013
原文:http://stackoverflow.com/questions/6366485/change-the-color-of-link-in-cshtml change the color of Link in cshtml use: @Html.ActionLink("WareHouse", "WareHouseIndex", "Admin", null, new { style = "color: #fff" }) or better yet new { @class = "white-link" } and style with css.

.Net MVC

spring.net+mvc3+Nhibernate示例Demo

5. 十一月 2012
花了两天时间研究了一下mvc3结合spring.net、nhibernate,好在以前有开发mvc2的经验还算顺利,集成的难关都顺利度过了,现在放出deno希望大家参考lz主要是参考了http://bbs.cfxixi.com/showtopic-187.aspx文章中的例子,略有不同,添加一个新的Library Project,dao和servicet写在了一个项目中。Demo下载: http://bbs.cfxixi.com/showtopic-190.aspx

.Net MVC

解决.net Mvc3 Unable to create type 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net'问题

5. 十一月 2012
参考:http://stackoverflow.com/questions/8172623/how-to-configure-logging-in-spring-net-using-log4net 可以使用nuget 添加dll 保证dll有如下配置: Common.Logging 2.1.1 Common.Logging.Log4Net 2.1.1 log4net 1.2.10

.Net MVC

Spring .net

22. 十月 2012
  NVelocity http://www.castleproject.org/others/nvelocity/index.html 这个是低版本的NVelocity,CastleNVelocity-1.1.0.zip 获取登录用户的email地址。 DiscuzSession ds= DiscuzSessionHelper.GetSession(); string email= ds.GetUserInfo(vu.CurrentUser.Userid).Email; 格式化数字-例子 cartItem.getListPrice().ToString("0.00")  

.Net MVC

配置.net log4et记录log

14. 十月 2012
lz在coldflex上找到了一个英文的教程,按照这个教程的示例发现系统会报错,在app。config里面写错了但是找起错误实在太累。。。。。http://www.codeproject.com/Articles/140911/log4net-Tutorial   于是乎找了一个中文的教程http://blog.csdn.net/zhoufoxcn/article/details/2220533 按照周公的配置项进行配置,成功~~因此建议大家如果配置log4net的话,最好是用最新的库文件,然后找个中文的教程进行配置。

.Net MVC, C#

使用Nvelocity实现发送邮件功能(ASP.NET MVC2环境下)

12. 三月 2012
  原文我的CSDN博客:http://blog.csdn.net/xiaoguang44/article/details/6226347 Nvelocity是一个原创于java平台,后被移植至.net平台的一个模板编辑引擎,引用Nvelocity.dll这个库文件,我们可以在原有的html模板上加载我们需要的信息,简单来讲就是可以将你需要的信息填充到html模板上。   这里我们需要实现发送邮件的功能,由于邮件内容可以填充html文件,我们首先准备一个html模板,这里我们假设存入Content文件下。         这里我们暂时不关注美刀符号以及相关的Nvelocity语法,将目光转回服务端。   在写代码之前,我们首先要引用 Nvelocity.dll这个库文件,然后进入controller文件。   现在我们来看下图片中的美刀符号,以及Nvelocity的语法,从图片中我们看到类似$order.Id、$order.Name这样的写法,其实$符号是Nvelociy调用代码的一个开始符号,这里的order是我们服务端的一个类,符号. 后面所代表的是order类里的属性,像Id,Name,Datetime 这些都是order类中所蕴含的属性,#号是命令符的开始标示,例如 #foreach($li in $order.LineItems) 这是一个枚举order类中LineItems集合的对象,值得注意的是每一个#foreach命令符都要跟一个#end作为循环的终止标记,其他的诸如#if逻辑需要配合#set使来用,例如: #if($order.TotalPrice>150) #set($fee="0") #else($fee="15") #end $fee 这里假设当属性totalprice>150时将自定义变量置为0,不然则置为150,并显示。     我们就先写一个order类,并简单的写几个属性(Id,Name,Datetime)     using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace SendMail.ViewModel { public class Order { private int id; public int Id { get { return id; } set { id = value; } } private string name; public string Name { get { return name; } set { name = value; } } private DateTime datetime; public DateTime Datetime { get { return datetime; } set { datetime = value; } } } }    写完后我们对其进行赋值,以便测试功能。   Order order = new Order(); order.Id = 101; order.Name = "CFXIXI44"; order.Datetime = DateTime.Now;     当做完了这些准备工作,下面我们可以宏观的思考邮件的制作了,发过邮件的人都明白,发送邮件需要有几个要件,1.发送人的地址,2.接收人的地址,3.邮件的标题,4.邮件的内容。  填完这四个条件我们便可发送。   于是我们这里我们定义一个方法,将类的对象(邮件内容),发送的地址,接受的地址,邮件的标题,一起送进函数。  public void CreateEmail(Order order,string mailfrom, string password, string mailto, string subject) {   }   1.编辑邮件内容 其实难的只有制作内容的这个步骤,像标题、发送地址,接收地址都可以人为的进行设置。 当然其实使用Nvelocity引擎,自动的,会将模板与传入的对象进行合并,逻辑上制作完成了我们需要的邮件内容(html)       VelocityEngine velocity = new VelocityEngine();//实例化Velocity引擎 ExtendedProperties props = new ExtendedProperties();//由于velocity引擎有指定的读取模板的路径,我们必须更改这个路径将这个变更告诉引擎,于是我们附加属性,通过props这个对象通知velocity引擎。 props.AddProperty("file.resource.loader.path", Server.MapPath("~/Content"));//我们将文件目录指定为Content文件下下 velocity.Init(props);//执行附加属性操作,通知引擎 Template template = velocity.GetTemplate("email.html");//通过引擎对象velocity的方法得到模板 VelocityContext context = new VelocityContext();//实例化模板的内容(模板中需要传入内容) context.Put("order", order);//将order对象传入内容 StringWriter writer = new StringWriter();//实例化一个寄存器 template.Merge(context, writer);//将模板+内容合并装入寄存器writer       2.编辑邮件标题、发送地址、接收地址 编辑完了邮件的内容,其实接下来的事已经一马平川了,使用vs自带的 system.Net.Mail 库文件实例化发送邮件的服务器主机,然后实例化一个邮件对象再将内容、标题、地址等字段装入即可。     System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();//实例化发送邮件的服务器主机(使用简单邮件发送协议) client.Host = "smtp.xxx.com"; //设定邮件的服务器主机 client.UseDefaultCredentials = false;//由于我们使用自己的邮箱作为发送地址 client.Credentials = new System.Net.NetworkCredential(mailfrom, "123456");//服务器主机需要认证你的身份(类似登入) client.DeliveryMethod = SmtpDeliveryMethod.Network;//电子邮件通过网络发送到smtp服务器 System.Net.Mail.MailMessage message = new MailMessage(mailfrom, mailto);//实例化一封邮件,并赋给邮件发送地址和接收地址 message.Subject = subject;//指定邮件的标题 message.Body = writer.GetStringBuilder().ToString();//将velocity引擎生成的内容通过寄存器的方法赋给邮件的内容 message.BodyEncoding = System.Text.Encoding.UTF8;//指定邮件内容的文字编码 //message.Bcc.Add("xxxxx@qq.com");//以密送的方式将邮件在不通知接收人的情形下,发送给别的接收人。 //message.CC.Add("xxxxx@qq.com,xxxxx@126.com");//抄送的方式,将原邮件发给其他人 message.IsBodyHtml = true;//指定邮件内容为html格式 // Attachment data = new Attachment(@"c:/youbitmap.bmp", System.Net.Mime.MediaTypeNames.Application.Octet);//指定附件的地址和文件的类型 // message.Attachments.Add(data);//在邮件中添加附件 client.Send(message);//服务器发送邮件     最后调用方法执行就大功告成了。   CreateEmail(order,"xxxx@126.com","xxxx@obizsoft.com","测试"); return Content("成功");   发送的结果:

.Net MVC, C#

MVC2的框架下,使用ColorBox弹出的几种用法

11. 三月 2012
原文出自我的csdn博客:http://blog.csdn.net/xiaoguang44/article/details/6618253 0.需加载colorbox的库文件与样式 <script src="/Content/scripts/jquery/jquery.colorbox-min.js" type="text/javascript"></script> <link href="/content/appoint/colorbox.css" rel="stylesheet" type="text/css" media="screen" />     一.1.内置对象colorbox弹出(写在同一个页面里面),这是一个预先隐藏的页面,当触发事件后,利用colorbox插件将其嵌套并显示出来。   <div style='display: none'> <div id='inline_comment' style='padding: 10px; background: #fff'> <ul class="comment-box"> <a name="ques-btn"></a> <li> <p> <strong> 您的评论:</strong></p> <textarea id="commentBody" class="comment-input" name="content" cols="" rows=""></textarea></li> <li><a href="javascript:submitComment();" style="width: 108px; margin-top: 8px; height: 26px; display: block; border: none; cursor: pointer;"> <img src="/Content/images/button/btn-forum-comment.jpg" alt="" /></a> </li> </ul> <br /> </div> </div>   2.通过SCRIPT触发事件,点击页面上的按钮(绑定一个函数,当函数触发时弹出colorbox)   function jumpComment() { $("#makeComment").colorbox({ width: "45%", inline: true, href: "#inline_comment" }); $("#makeComment").click(); }     二.1.点击页面后弹出colorbox,这是网页页面上的代码。 <td id="seeDetail1"><a href="/bbb/aaa?Id=<%=item.Id %>" id="seeDetail2" >查看详情</a> <a href="/bbbr/nnn?Id=<%=item.Id %>">立即支付</a><br /> <a href="/eee/CancelOrder?customId=<%= item.CustomId %>">取消订单</a></td>     2.script中绑定触发函数 <script type="text/javascript"> $(document).ready(function () { $("#seeDetail1 #seeDetail2").colorbox({ iframe: true, innerWidth: 740, innerHeight: 360 }); }); </script>       3.定义Controller,触发函数后,系统会经由controller中定义的action一路执行代码逻辑。 public ActionResult OrderDetail(string Id) { if (!String.IsNullOrEmpty(Id)) { string itemId = Id; long orderId = Convert.ToInt64(itemId); Order orderDetail = OrderQueryService.FindOrderById(orderId); ViewData["orderDetail"] = orderDetail; } return View(); }       4.定义弹出的页面 如是,以上是常用的2种弹出方法。

.Net MVC, JQuery

如何创建4位数字验证码图片(ASP.NET MVC2环境下)

10. 三月 2012
原文在我的csdn博客上:http://blog.csdn.net/xiaoguang44/article/details/6195770     基于mvc2架构下的验证码由一个controll中的action负责管理view上 的一个动作,这是在controll中创建验证码图片的过程。   public FileResult ConfirmCode() { //生成4位随机数,并将其转为string型,传入session,4位数字由随 机数从1000-9999中提取。 string ConfirmCode = string.Empty; Random rand = new Random(); ConfirmCode = rand.Next(1000, 9999).ToString(); Session["QuickChannelConfirmCode"] = ConfirmCode; //大自然中的任何颜色都可以由三基色红绿蓝组合而成,三色的颜色的变 化都可以量化为(0-255)的数值,因此只要控制红、绿、蓝三色的取值 便可以随机出验证码的颜色//于是我首先先实例化了两个随机数的对象rand1、rand2,然后通过随机 数中Next的方法在(0-255)中提取数字//为了让随机色都是鲜明的颜色,我们控制rgb中蓝色,由于蓝色在取(145-255)的 时候,颜色为亮色。//这里使用了两个逻辑表达式,blue1的取值逻辑,假设(red的值+green大 于400,blue1的值则取为0,否则blue1的值为(400-red-green))//由于上面的逻辑可能导致blue1的值大于255,为了防止这一情况的出 现,再设一个逻辑表达式,假设大于255时,蓝色的值取为255。//最后通过Color类的FromArgb方法,生成一个随机色。 Random rand1 = new Random(); Random rand2 = new Random(); int red = rand1.Next(256); int green = rand2.Next(256); int blue1 = (red + green > 400) ? 0 : 400 - red - green; int blue2 = (blue1 > 255) ? 255 : blue1; Color col = Color.FromArgb(red,green,blue2);   生成了数字与颜色后,我们需要将这些元素组合并绘制成图片。从绘图的角度 上来说,一张图片的生成要有可绘画区域以及包裹它的框架。    于是首先我们实例化Bitmap类,生成一个宽imagewidth,长20的可绘画区域bmp。将其封装至框架g中,这样g中就存在了一个可绘画区域(bmp)。g.Clear(Color.White)将可绘画区域内所有的颜色清除,并填充白色。类似于PS的起始状态,此时我们对g进行绘画,绘制一个矩形(由于绘制矩形需要告 诉绘图面板绘图的工具、起始坐标、结束坐标),这里使用了pen,从 (0,0)位置绘制到(imagewidth-1,19)这个坐标.绘制完矩形后,绘制矩形内的内容,由于绘制的是string类型,因此需要准备四大参 数1.绘制的内容(上面生成的数字),2.字体,3.用什么“工具”画4.从哪开始画(起始位置),综合上面的四点,我们便可以使用DrawString方法绘制验 证码了。 int imageWidth = ConfirmCode.Length * 13; Bitmap bmp = new Bitmap(imageWidth,20); Graphics g = Graphics.FromImage(bmp); g.Clear(Color.White); g.DrawRectangle(new Pen(Color.LightGray,1),0,0,imageWidth-1,19); Font font = new Font("Arial", 16); Brush brush = new SolidBrush(col);//col 为上文随机出的颜色 Point po = new Point(0, 0); g.DrawString(ConfirmCode,font,brush,po);   //生成后的图片需要输出。为了输出,首先我们要先要告诉游览器图片输出的类型(由 于游览器只识别MIME码),为了避免乱码,指定输出类型为image/jpeg//图片以流的方式输出至游览器,因此需要首先将图片bmp存入内存的流ms,并格式化 其图片类型为jpeg//设置内存流ms的查找起点位置在0这个位置//最后以文件流的形式返回至视图.   Response.ContentType = "image/jpeg"; MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Jpeg); ms.Seek(0, SeekOrigin.Begin); return new FileStreamResult(ms, "image/jpeg"); }   制作完了controll中的逻辑,我们回到视图,先创建一个简单的页面(没有绑CSS),并 声明调用jquery。   <form id="form1" method="post"> <label>姓名:</label> <input type="text" name="nameTextBox" id="nameTextBox" /><br /> <label>验证码:</label> <input type="text" name="textbox1" id="textbox1" /><br /> <label>Email</label> <input type="text" name="email" id="email" /> <img id="ConfirmImage" src="/Home/ConfirmCode" mce_src="Home/ConfirmCode" alt="验证码" /><br /> <span><a href="javascript:refreshPic()" mce_href="javascript:refreshPic()"> 看不清,换一张</a></span> <label><a href="../../Content/ohoopee2.jpg" mce_href="Content/ohoopee2.jpg" rel="bigPic">(点击放大)</a></label> <br /> <a href="javascript:check()" mce_href="javascript:check()">确认</a> </form>   在这个页面中,我们需要考虑几个问题。首先当两个textbox为空时,怎么办? 一般来讲,当出现这种情况的时候可以用js在页面层面进行判断。 于是我们写了一个validateAddress()的函数对当textbox中值为空的情况进行判断 并且,还要考虑正则表达式,防止用户的乱输字符的情形 。   function validateAddress() { if ($("#nameTextBox").val() == "") { alert("请输入姓名"); return; } if ($("#textbox1").val() == "") { alert("请输入验证码"); return; } if ($("#email").val() == "") { alert("请输入Email地址"); return; } if ($("#email").val() != "") { var reg = /^[a-z0-9]([a-z0-9]*[-_/.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[/.][a-z]{2,3}([/.][a-z]{2})?$/i; if (!reg.test($("#email").val())) { alert("请输入正确的EMAIL地址"); return; } } $("#form1").submit(); }   第二个需要考虑的问题是验证码看不清时的更换,参考邮箱的“看不清”链接,我们 同样使用一个js,绑在这段文字上。 函数采用了局部刷新的做法,通过document的方法定位到img控件的src属性上 当点击时,执行服务端的action(“/Home/ConfirmCode”),使页面在正体不 刷新的情况下,局部刷新。   function refreshPic() { document.getElementById("ConfirmImage").src = "/Home/ConfirmCode"; }   除此以外,对于验证码是否正确的判断。我们使用了url传值的方法,在服务器端进行判断。 函数的作用在于通过jquery中getscript的方法,将值通过url传递给服务端, 由服务端进行逻辑判断,最后通过服务端返回的给页面,由js根据返回结果给出 提示文字。   页面方法: function check() { $.getScript("/Home/CheckCode?code=" + $("#textbox1").val(), function (j) { if (eval(j) == true) { validateAddress(); alert("验证通过"); } else { refreshPic(); alert("验证码错误!请检查"); } }) } 服务端逻辑: 注意当session为null以及为”“时的情况,不注意的话系统可能会报错 。 还有就是session使用后一定要有资源释放的设定,不然会造成资源的 紧张,影响网站的运行的效率。   public ActionResult CheckCode() { string quickChannalConfirmCode = Request.QueryString["code"].ToString(); if (Session["QuickChannelConfirmCode"] == null || "".Equals(Session["QuickChannelConfirmCode"].ToString())) { return Content("false"); } string yanzheng=Session["QuickChannelConfirmCode"].ToString(); Session.Remove("QuickChannelConfirmCode"); if (quickChannalConfirmCode ==yanzheng) { return Content("true"); } else { return Content("false"); } }   由此一个简单的验证码功能便大功告成~~~~

.Net MVC

.Net Mvc在自身网页中嵌套网页

7. 三月 2012
在html里面可以使用frame嵌套一个外部页面诸如: 但是在.Net MVC中这个tag被定义为非法,因此我们可以用iframe这个tag去实现 诸如:........ [更多...]

.Net MVC