2017年12月

asp.net mvc中EF执行带输出参数的存储过程

public ActionResult StoredProcedure(int id = 1)
{
using (var db = new DataContext())
{
var pageSize = 5;
var startIndex = (id - 1)*pageSize + 1;
SqlParameter prmStart = new SqlParameter("@startIndex", startIndex);
SqlParameter prmEnd = new SqlParameter("@endIndex", startIndex + pageSize);
SqlParameter prmTotal = new SqlParameter("@totalItems", SqlDbType.Int);
prmTotal.Direction = ParameterDirection.Output;

          var articles =  
              db.Database.SqlQuery<Article>(  
                  "exec [USP_GetPagedArticleList] @startIndex,@endIndex,@totalItems out", prmStart, prmEnd,  
                  prmTotal).ToList();  
          var totalItems = (int) prmTotal.Value;  
          var model = new PagedList<Article>(articles, id, pageSize, totalItems);  
          return View(model);  
      }  
  }  

angular1路由route遇到#!【解决】

angular1 双向数据绑定已经基本掌握,今天用路由angular-route,遇到#后多出一个感叹号! 。路由不能正常使用。
开始就感觉是angular版本的问题,查资料
果然,使用angular 1.6.0以上版本,需要在配置路由config加上

$locationProvider.hashPrefix('');

$location服务解析地址栏中的URL(基于window.location),让你在应用代码中能获取到。改变地址栏中的URL会反应$location服务中,反之亦然。
http://www.angularjs.cn/A00M

'use strict';

angular.module('MyApp', [
'ngRoute',
'myApp.in_theaters',
'myApp.coming_soon',
'myApp.top250'
]).
config(['$routeProvider', '$locationProvider',function($routeProvider,$locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider.otherwise({redirectTo: '/in_theaters'});
}]);

可以正常使用。

在ajax发送成功后,无法使用jquery on对新添加的DOM进行绑定【解决】

今天 帮一个版块的详细信息,遇到这个问题了。发现选择器正确,事件也都正确,但是没有触发点击事件的效果。
了解这些绑定的区别就解决了。


bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数

$("a").bind("click",function(){alert("ok");});

live(type,[data],fn) 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的

$("a").live("click",function(){alert("ok");});

delegate(selector,[type],[data],fn) 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数

$("#container").delegate("a","click",function(){alert("ok");})

on(events,[selector],[data],fn) 在选择元素上绑定一个或多个事件的事件处理函数

差别:

.bind()是直接绑定在元素上

.live()则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。

.delegate()则是更精确的小范围使用事件代理,性能优于.live()

.on()则是最新的1.9版本整合了之前的三种方式的新事件绑定机制

IIS部署网站,出错: 无法识别的属性“targetFramework”。请注意属性名称区分大小写【解决】

IIS部署网站。出现错误信息如下:
无法识别的属性“targetFramework”。请注意属性名称区分大小写
targetFramework:意思是 目标framework。
调整版本
在IIS根节点,点击【更改.Net Framework版本】
然后在更改应用程序池.Net Framework版本。点击【设置应用程序池默认设置】,更改.Net Framework版本。


发布访问,又报错如下:
处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”。
由于我程序基于.Net Framework 4.0,
4.0的框架是独立的CLR,和2.0的不同。
需要用aspnet_regiis注册4.0框架。
路径: C:\Windows\Microsoft.NET\Framework\v4.0.30319。
在命令行,cd 切换到此目录。 aspnet_regiis.exe -i .完成安装,可以正常访问发布的网站。