Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 651|回复: 0

【原创】ASP.NET MVC3开发中遇到问题以及解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-8-26 14:03:20 | 显示全部楼层 |阅读模式

    小弟刚学MVC3,在学习过程中遇到了很多的问题,现在把已遇到问题总结出来,以后陆续更新。方便和我一样的新手。。

    1.手写Model类,EF执行错误找不到表对象。

    [TableAttribute("ProductEntity")]
    public class ProductEntity{}

    2.加载不同的Layout,在_ViewStart.cshtml中添加逻辑

    @{if (Request.Url.AbsoluteUri.Contains("Manage"))
    {
    Layout = "~/Views/Shared/_MLayout.cshtml";
    }else{
    Layout = "~/Views/Shared/_LayoutLogin.cshtml";
    }
    }

    3.图片image设置动态url
    a.Detail/Creat/Edit页面:

    @model TaiQiu.Models.ProductEntity
    <img id="preview" src="@Html.DisplayFor(model => model.PicUrl)"/>

    b.List页面:

    @model IEnumerable<TaiQiu.Models.ProductEntity>   
    @foreach (var item in Model)
    {
    <img src="@item.PicUrl" alt="@item.Title"/>
    }

    4.用户登录/权限

    //验证用户成功后,将用户写入cookie
    System.Web.Security.FormsAuthentication.SetAuthCookie(_user, false);
    //后台Controller中添加Authorize,如果可以配置Users/Role
    [Authorize(Users/Role = 允许账号/角色)]
    public class ManageController : Controller{}

    配置文件中其中Form验证

       <authentication mode="Forms">
    <forms loginUrl="~/Login/" timeout="2880" />
    </authentication>

    5.IIS6配置MVC3

    找不到 System.Web.Razor,System.Web.MVC 等。需要把开发环境下对应的dll复制到服务器bin文件下

    6.View中控件样式设置

    @Html.TextAreaFor(model => model.Infor, new { style = "width:800px;height:400px" })
    或者
    @Html.TextAreaFor(model => model.Infor, new { @class=样式名})

    7.TextArea设置Rows,Columns(第2个参数为rows,第3个参数为columns)

    @Html.TextAreaFor(model => model.FileInfo,5,5, new { style="width:300px;height:100px;"})

    8.文件上传,注意加粗红色部分

    View代码:

    @using (Html.BeginForm("actionName", "cotrollerName", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
    <input type="file" name="FilePath" id="FilePath" />
    }

    Controller代码:

    HttpPostedFileBase file = Request.Files[0] as HttpPostedFileBase;
    if (file.FileName != "")
    {
    //code
    }

    9.foreach,使用ViewBag动态特性

    Controller代码:

    var recommendporduct = PE.ProductEntity.Where(a => a.Recommend).Take(5);
    ViewBag.rplist = recommendporduct;
    return View();

    View代码:(注意:使用ViewBag,不会有代码提示。

           @foreach (var item in ViewBag.rplist)
    {
    <div class="rught_cptxt2">
    <ul>
    <li class="rught_cpimg1"><a href="#">
    <img src="@item.PicUrl.Trim()" border="0" /></a></li>
    <li class="rught_cptxt1"><a href="#">@item.Title</a></li>
    </ul>
    </div>
    }

    10.DropDownList绑定
    Controller代码:

            //类别
    public SelectList GetSL()
    {//此处静态数据,可以使用EF读取数据库
    List<SelectListItem> list = new List<SelectListItem> {
    new SelectListItem(){Value="0",Text="新闻资讯"},
    new SelectListItem(){Value="1",Text="技术文章"}
    };
    return new SelectList(list, "Value", "Text");
    }
    public ActionResult Create()
    {
    ViewBag.ddl = GetSL();
    return View();
    }

    View代码:

    //引号中对应ViewBag中的值
    @Html.DropDownList("ddl")
    或者使用强类型(将GetSL()静态方法放在类中,直接调用。)
    @Html.DropDownListFor(model => model.IsTechnology, GetSL(), "请选择")

     11.查询

    a.EF4.1中支持使用sql:

    DbSet<BlogMaster>set= context.Set<BlogMaster>();
    List
    <BlogMaster> list =set.SqlQuery("select *from BlogMaster where UserId='3'"
    ).ToList();

    b.使用linq to entity framework:
    DemoDBEntities context =new DemoDBEntities();
    DbSet
    <BlogMaster>set= context.Set<BlogMaster>();
    var result
    = from u inset.ToList()
    where u.UserID ==3

    select u;

    c.使用labmda查询:
    var list =set.Where(o => o.UserID ==3);
    var listGroup
    =set.GroupBy(o => o.UserID);

    12.输出html标签

     

    @Html.Raw(内容)

     

     13.@使用

    • 输出@符号:@@
    • 输出Email地址:Razor模板会自动识别出Email地址,所以不需要我们进行任何的转换。而在代码块中,只需要使用 @:Tom@gmail.com 即可。@:表示后面的内容为文本。
    • 输出HTML代码(包含标签):直接输出,string html = "<font color='red'>文本</font>"; @html
    • 输出HTML内容(不包含标签):有两种方法,
      第一种:IHtmlString html=new HtmlString("<font color='red'>文本</font>"); @html;
      第二种:string html = "<font color='red'>文本</font>"; @Html.Raw(html);

     

     

    未完。。待续。。。。




    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 11:23 , Processed in 0.058714 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表