zoukankan      html  css  js  c++  java
  • MVC 自学笔记一(不断更新)

    1、断断续续学了一段时间的MVC,遇到不少麻烦事,今天为了添加富文本编辑器(用的kindeditor)给我折腾坏了,咋说也得记录一下,按照里面的.NET的DEMO以及网上的方法,添加上去很简单,可是等到去调试上传图片时发现不是那么那么回事了,怎么都上传不了,一直显示在上传中,经过不断的排除,发现问题在于那两个ashx文件里using LitJson;这句不对劲,原来手欠把后面的JSON写成了大写,导致就算在项目里已经引用过该DLL,但在VS里还是有小红线下划提示,解决方法就是改成using LitJson,我了个去,就是这样,解决。

    2、同样利用KINDEDITOR的图片上传,添加一个上传图片的文本框,这样就省去了自己再做这个功能,而且超级好用,在编辑器的文件夹下有个examples,找到image-dialog.html,看到了吧,一目了然,取出代码整合到刚才的页面吧,代码如下:

    KindEditor.ready(function (K) {
            var editor = K.create('#Tag', {
                cssPath: 'http://www.cnblogs.com/kindeditor/plugins/code/prettify.css',
                uploadJson: 'http://www.cnblogs.com/kindeditor/asp.net/upload_json.ashx',
                fileManagerJson: 'http://www.cnblogs.com/kindeditor/asp.net/file_manager_json.ashx',
                allowUpload: true,
                allowFileManager: true,
                afterCreate: function () {
                    var self = this;
                    K.ctrl(document, 13, function () {
                        self.sync();
                        K('form[name="AddNewsContent"]')[0].submit();
                    });
                    K.ctrl(self.edit.doc, 13, function () {
                        self.sync();
                        K('form[name="AddNewsContent"]')[0].submit();
                    });
                }
            });
            K('#image1').click(function () {
                editor.loadPlugin('image', function () {
                    editor.plugin.imageDialog({
                        imageUrl: K('#url1').val(),
                        clickFn: function (url, title, width, height, border, align) {
                            K('#url1').val(url);
                            editor.hideDialog();
                        }
                    });
                });
            });
    ...
    

      此代码当然咋VIEW页面中,下面对应添加  <p><input type="text" id="url1" value="" /> <input type="button" id="image1" value="选择图片" />(网络图片 + 本地上传)</p>这段即可。

    3、上传缩略图如果想在页面中及时预览,可以把上述代码改成这样:

                            
    。。。
                     K('#url1').val(url);
                            $("#result").append("<img width='150' height='130' src='" + url + "'>");
                          //  $("#Pic").attr("value", url);
                            editor.hideDialog();
    。。。。
    

    4、下面解决在MVC中,由于绑定机制直接取得的编辑器中的HTML代码对.NET来说是危险的故而要对编辑器内容转码的问题。

    因为.NET的防跨站攻击机制(具体啥啥就那啥啥去吧),直接保存带有HTML标签的内容,会报错,大意就是检测到有潜在危险的 Request.Form 值,此时考虑入库前转码,由于百思不得要领,故而退而求其次,还是程序直接保存吧,方法如下:(既然是防止跨站攻击的,自然有用,非不得已不能禁啊)

    在根目录下的WEB.CONGIF文件里

    <pages>
          <namespaces>
            <add namespace="System.Web.Mvc" />
            <add namespace="System.Web.Mvc.Ajax" />
            <add namespace="System.Web.Mvc.Html" />
            <add namespace="System.Web.Routing" />
            <add namespace="MvcPaging" />
          </namespaces>
        </pages>
        <httpRuntime requestValidationMode="2.0"/>加上最后这段

    5、********************************分割线*************************************************

    1、MVC中EF立建立关联,外键,两表建立联系,在数据库设计里右键点击字段名(任意一个字段皆可),选择关系--弹出框 表和列规范 右边有个选择,在这里建立联系。

    2、不知道是不是EF的BUG,当字段设置为bit也就是布尔类型时,在VIEW里如果是用了CheckBoxFor(CheckBox),会引发一个错误:CS0266: 无法将类型“bool?”隐式转换为“bool”。存在一个显式转换(是否缺少强制转换?)

    解决此问题的方法就是用XML格式打开数据模型xx.edmx,找到<edmx:ConceptualModels>....</edmx:ConceptualModels>中间的你的那张表,然后找到你那个设置了bit类型的字段,加上一个属性:Nullable="false" 举例:<Property Type="Boolean" Name="isTop" Nullable="false" />,如此即可

  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/ss159/p/2979571.html
Copyright © 2011-2022 走看看