• 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" />,如此即可

  • 相关阅读:
    H3C IS-IS基础配置
    H3C OSPF实验大集合(IPv4)
    H3C OSPF实验大集合(IPv6)
    H3C RIP实验大集合
    H3C IPv4和IPv6负载均衡
    H3C IPv4与ipv6静态路由
    H3C 配置dns及arp
    H3C 配置DHCP服务器
    H3C 多生成树MSTP
    H3C 配置ftp服务器
  • 原文地址:https://www.cnblogs.com/ss159/p/2979571.html
Copyright © 2020-2023  润新知