我正在动态创建一个这样的组合框:
public Control GenerateList(Question question)
{
// Get a list with answer possibilities
List<QuestionAnswer> answers = question.GetAnswers();
// Get a collection of given answers
Collection<QuestionnaireAnswer> givenAnswers = question.GetFilledAnswers();
ComboBox cmb = new ComboBox();
cmb.Name = "cmb";
cmb.DataSource = answers;
cmb.DisplayMember = "Answer";
cmb.ValueMember = "Id";
// Check an answer is given to the question
if (givenAnswers != null && givenAnswers.Count > 0)
{
cmb.SelectedValue = givenAnswers[0].AnswerId;
}
cmb.DropDownStyle = ComboBoxStyle.DropDownList;
cmb.SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged);
cmb.Leave += new EventHandler(cmb_Leave);
return cmb; …Run Code Online (Sandbox Code Playgroud) 在我的Web应用程序中,我使用ashx文件将文件写入浏览器.我注意到.ashx文件没有压缩,但仅限于.aspx文件.
是否可以压缩.ashx?如果有可能,怎么样?
目前我使用global.asax来处理压缩:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.IO.Compression" %>
<script runat="server">
void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (!(app.Context.CurrentHandler is Page ||
app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;
if (acceptEncoding == null || acceptEncoding.Length == 0)
return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// defalte
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
} else …Run Code Online (Sandbox Code Playgroud) 我想锁定一条记录,然后没有人可以对该记录进行更改.当我释放锁定时,人们可能会更改记录.
在此期间锁定记录时,我想向用户显示记录已被锁定且不允许更改的警告.
我怎样才能做到这一点?
我已经尝试了所有的IsolationLevel级别,但它们都没有我想要的行为.某些隔离级别会等到锁定释放后再进行更改.我不希望这样,因为在锁定记录时不允许更新.
如何锁定记录并拒绝所有更改?
我使用SQL Server 2008
我是EF 4的新手,这是我到目前为止所做的:
现在,我正在处理两个对象,A和B.对象A具有类型B的属性.在我的winform中,我有一个组合填充了类型B的对象.当按下保存按钮时,A类的新实例是创建并设置所有属性.对象B属性设置如下:
objectA.myObjectB = (objectB)cmbBObjects.selectedItem;
Run Code Online (Sandbox Code Playgroud)
然后我为objectA创建一个存储库并调用save方法.在这个保存方法中,我有这个代码±
public bool Save(ObjectA obj)
{
using(MyContext context = new MyContext())
{
context.objectAs.AddObject(obj);
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码确实为数据库保存了一个新条目,但它也为对象B创建了一个新记录!我不想要这个,因为对象B已经存在于数据库中!(我从组合框中选择了这个).
这就是我填充组合框的方式:
在objectB存储库中:
public IList<ObjectB> GetAll()
{
using(MyContext context = new MyContext())
{
IList<ObjectB> objects = context.objectBs.ToList();
return objects;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的形式:
ObjectBRepository rep = new ObjectBRepository();
IList<ObjectB> objects = rep.GetAll;
cmbBObjects.Datasource = objects;
// etc..
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何在不为objectB创建新记录的情况下保存对象A?
我有三个控制器:主,产品,客户.控制器A是我"主页"的一部分.控制器B和C取决于位置.
控制器主要:
var MainController = function ($scope, $location, $rootScope, ToolbarService) {
$scope.addClicked = function () {
ToolbarService.onAddButtonClick();
};
};
app.controller({ MainController: MainController });
Run Code Online (Sandbox Code Playgroud)
产品:
var ProductController = function ($scope) {
$scope.$on('handleAddButtonClick', function () {
alert('Add product');
});
};
app.controller({ ProductController: ProductController });
Run Code Online (Sandbox Code Playgroud)
顾客:
var CustomerController = function ($scope) {
$scope.$on('handleAddButtonClick', function () {
alert('Add customer');
});
};
app.controller({ CustomerController: CustomerController});
Run Code Online (Sandbox Code Playgroud)
toolbarService:
app.service({
ToolbarService: function ($rootScope) {
return {
onAddButtonClick: function () {
$rootScope.$broadcast('handleAddButtonClick');
}
};
}
});
Run Code Online (Sandbox Code Playgroud)
当我的位置是#/products并且 …
我试图理解OAuth是如何工作的,但感觉就像是一个巨大的魔术表演,我不喜欢这样.
我创建了一个新的MVC5项目并启用了facebook身份验证.这一切都运行正常,但是,我试图了解这是如何工作的.
这是我迷路的部分.想象一下,用户想要第一次登录.这个方法是执行的:
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
// Sign in the user with this external login provider if the user already has a login
var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });
case SignInStatus.Failure:
default:
// If the user does not have …Run Code Online (Sandbox Code Playgroud) 我有一个关于使用的问题new[].
想象一下:
Object.SomeProperty = new[] {"string1", "string2"};
Run Code Online (Sandbox Code Playgroud)
SomeProperty需要一个字符串数组.
我知道这段代码会起作用.但我想知道它在幕后做了什么.是否new[]创建了类的实例,object并在SomeProperty其中将其自动转换为string对象?
谢谢
我的所有指令都使用相同的范围,我希望我的指令可以自己操作.
指示:
app.directive('headerSort', function () {
return {
restrict: 'A',
controller: function ($scope, $element, $attrs) {
$scope.caption = $attrs.caption;
$scope.doSort = function () {
$scope.orderField = $attrs.headerSort;
$scope.reverse = !$scope.reverse;
};
},
template: '<div data-ng-click="doSort();">' +
'{{caption}}' +
'<i class="icon-sort"></i>' +
'</div>'
};
});
Run Code Online (Sandbox Code Playgroud)
HTML:
<th data-header-Sort="FullName" data-caption="Full name"></th>
<th data-header-Sort="FirsName" data-caption="First name"></th>
<th data-header-Sort="Age" data-caption="Age"></th>
Run Code Online (Sandbox Code Playgroud)
结果是所有列都具有值'Age'并按Age排序.我当然希望每列都对它自己的列进行排序.我怎样才能做到这一点?
更新:忘了提及,orderField并reverse用于ng-repeat | orderBy:
<tbody id="customerRows" data-ng-repeat="customer in customers | orderBy:orderField:reverse">
Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的jsfiddle来说明我的问题:
HTML:
<div ng-controller="MyCtrl">
<div ng-repeat="p in products">
<span ng-click="overwrite(p)">{{ p.id }}: {{ p.name }}</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
var products = [{id:1, name:'first'}, {id:2, name:'second'}];
$scope.products = products;
var prod = {id: 3, name:'third'};
$scope.overwrite = function(p){
p.id = 4;
p.name = 'forth';
p = prod; // this doesn't work nor does angular.copy(prod)
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,当我手动设置属性时,值是bind.但是当我覆盖一个对象时,没有任何反应.这怎么可能?当我想要恢复其原始状态的对象时,我该怎么办?
想象一下,我使用创建备份对象var productBackup = angular.copy(product).然后我对原始产品进行了更改,之后我决定取消更改.我想用这个来做product = productBackup.但这不起作用!在这种情况下,我是否需要像这样手动设置所有属性?
product.id = productBackup.id;
product.name = productBackup.name; …Run Code Online (Sandbox Code Playgroud) c# ×7
angularjs ×3
javascript ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
combobox ×1
locking ×1
new-operator ×1
oauth ×1
sql ×1
winforms ×1