我现在正在编写一个新的应用程序,虽然公司标准是使用NHibernate(因为这是所有项目的标准),而我现在正在使用ASP.NET MVC 3,因为它已经成熟.我已经在控制器中实现了我的事务(据说这是你应该这样做的方式),所以它在我的根控制器中看起来像这样:
[TransactionPerRequest]
public class FbsController : Controller
{
}
Run Code Online (Sandbox Code Playgroud)
然后我的所有控制器都继承了这个FbsController.这样做的原因是因为90%的所有操作都将转移到数据库,因此创建事务并将其处理剩余10%的操作(很少会执行)的开销不值得装饰每一个动作[TransactionPerRequest].
总是困扰我的事情是关于NHibernate会话.在存储库类中,这与我所拥有的一致,尽管这在其他项目中是不同的:
public void Add(User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
session.Save(user);
}
}
public void Remove(User user)
{
using (ISession session = NHibernateHelper.OpenSession())
{
session.Delete(user);
}
}
public User GetById(int userId)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.QueryOver<User>()
.Where(c => c.UserID == userId)
.SingleOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
那么对于我的存储库中的大多数函数,我必须打开一个会话.有没有办法避免这种行为,所以我不必在每个存储库方法中打开一个会话?这似乎有点反直觉,因为我通常必须为每一个人做这件事.我想知道其他人的解决方案是什么解决了交易和会话问题,我看到各种各样的代码乱七八糟.
实际上我希望我的存储库方法如下所示:
public void Add(User user)
{
session.Save(user);
}
public void Remove(User user)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个简单的设置,一个表格,其单元格中有复选框.我有两个事件,一个响应单击复选框,另一个响应单击"tr"元素.当我单击一个复选框时,我不希望触发表行事件.我试着event.stopPropagation()和return false;没有任何的运气.这是一个片段:
$("tr").click(function() {
alert("tr clicked");
});
$("input[type=checkbox]").change(function(event) {
event.stopPropagation();
alert("checkbox clicked");
});
Run Code Online (Sandbox Code Playgroud)
有类似的东西:
<tr>
<td><input type="checkbox" id="something" name="something" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
如果更改事件触发,则click事件也将触发.tr如果在td元素中更改了复选框,如何停止点击事件的任何线索tr?
我已经有一个css部分:
.leftMemberCol
{
width:125px;
vertical-align:top;
padding: 13px;
border-width:0px;
border-collapse:separate;
border-spacing: 10px 10px;
text-align:left;
background-color:#f2f3ea;
}
Run Code Online (Sandbox Code Playgroud)
对于td部分(左侧栏).我想让这个单元格内的所有链接都是绿色.
是否有任何语法:
.leftMemberCol.a
{
color:#E3E3CA;
}
Run Code Online (Sandbox Code Playgroud)
或任何其他建议,而不必去每个页面并包装另一个类名称周围的所有链接.
我正在使用jQuery 1.8-UI中的新自动完成功能.我提供了以下格式的数据
["val1", "val2", "val3"]
Run Code Online (Sandbox Code Playgroud)
这来自存储过程但输出为字符串.但是,由于某种原因,如果我使用javascript变量提供相同的数据,这根本不起作用
var data = ["val1", "val2", "val3"];
Run Code Online (Sandbox Code Playgroud)
然后这很好.
<script type="text/javascript">
$(function()
$("#txtClient").autocomplete({
source: "/intranet/common/scripts/IntranetLists.aspx?ListType=C"
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我有一个页面,使用查询字符串提供我想要的任何数据.这是暂时的,但是当我以前使用过bassism的自动完成功能时它会起作用.
有任何想法吗?
编辑
源只是在单独的行上输出一个条目.现在输出使用JSON格式.我不明白的是输入如何将数据作为查询提供给数据源.正如我说的,我用一个脚本应该被调用每次我进入一个新的关键时期.
这是我得到的代码(考虑到这与第三方自动完成插件一起工作正常)
<%
Dim MyCmd As New dbExact("proc_Intranet_Lists")
MyCmd.cmd.Parameters("@List").Value = Request.QueryString("ListType")
If Request.QueryString("Top") <> Nothing Then
MyCmd.cmd.Parameters("@Top").Value = Request.QueryString("Top")
End If
MyCmd.cmd.Parameters("@Code").Value = Request.QueryString("term")
MyCmd.cmd.Connection.Open()
Dim results As New StringBuilder()
results.Append("[")
Dim dr As SqlDataReader = MyCmd.cmd.ExecuteReader
If dr.HasRows Then
While dr.Read
results.AppendLine("'" + dr(0).ToString() + "',")
End While
Else
results.Append("None …Run Code Online (Sandbox Code Playgroud) 基本上我想反向迭代2 std :: vectors.图层具有形状向量.
通常我可以这样做:
for(int i = 0; i < layers.size(); ++i)
{
for(int j = 0; j < layers[i].shapes.size(); ++j)
{
layers[i].shapes[j].dosomething();
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在我需要反向迭代遍历向量,因此需要使用反向迭代器,但这将如何工作?由于迭代器类似于每个迭代器,我如何访问正在迭代的当前层的当前形状?谢谢
基于这篇文章:How do you create a dropdownlist from an enum in ASP.NET MVC?
我想做完全相同的事情,除了使用枚举中的 AttributeDescription 字段,例如:
[DescriptionAttribute("1 Star")] OneStar = 1,
[DescriptionAttribute("2 Stars")] TwoStar = 2,
[DescriptionAttribute("3 Stars")] ThreeStar = 3,
[DescriptionAttribute("4 Stars")] FourStar = 4
Run Code Online (Sandbox Code Playgroud)
前面的链接中给出的解决方案将在下拉列表的文本字段中显示“OneStar”,而我希望看到“1 Star”。我看过一些与此相关的帖子,但他们的解决方案非常冗长。
这对某些人来说可能相当直接,但是我有点困惑,找不到一个像样的例子.假设我正在使用视图模型,我的POST操作会接受该视图模型.通常我会按照以下几行做一些事情:
[HttpPost]
public ActionResult Update(UserViewModel uvm)
{
User user = Mapper.Map<UserViewModel, User>(uvm);
_repository.Update(user);
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
虽然这不是全貌.映射可以正常工作,但是如果我只是更新我映射的内容,那么它就会删除数据库中的有价值的数据,因为在这种情况下我不会更新密码或其他细节.
我的存储库看起来像这样:
public void Update(User user)
{
User u = Session.QueryOver<User>().Where(x => x.UserName == user.UserName).SingleOrDefault();
if (u == null)
throw new Exception("User not found");
u.Forename = user.Forename;
u.Surname = user.Surname;
u.EmailAddress = user.EmailAddress;
}
Run Code Online (Sandbox Code Playgroud)
[我正在使用NHibernate,因此一旦会话关闭(请求完成后),它会自动将对象保存回数据库.]
所以我的问题是,在我的存储库中,我应该加载"用户"实体,然后更新我想要的值,然后将其保存回来,还是有另一种方法来执行此操作?我问的原因是因为它看起来有点......"手动",如果你明白我的意思?也许这是正确的,但我只想看到那些在这方面有更多经验的人的意见.
干杯
我正在按照本指南公开一些Apple的帮助.我工作的应用程序已经内置了多年的帮助,但它突然停止工作,并且没有对应用程序plist或任何帮助文件进行任何更改.我们假设Apple改变了一些东西,所以我确保它符合Apple要求的规格.当我说"不工作"时,我的意思是我们的链接使用NSHelpManager将打开帮助查看器,但带回一个找不到的页面.
要查看清单的事情:
这是我们用来打开帮助页面的代码:
NSString *locBookName = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleHelpBookName"];
[[NSHelpManager sharedHelpManager] openHelpAnchor:@"mypage" inBook:locBookName];
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我们有一个<a name="mypage"></a>顶部有一个页面,所以它应该正确链接.我们的脚本如下:
hvfix(清除所有缓存):
rm -rf ~/Library/Caches/com.apple.help*
rm -rf ~/Library/Preferences/com.apple.help*
rm -rf ~/.Trash/*
killall helpd
defaults write com.apple.helpindexer IndexAnchors YES
Run Code Online (Sandbox Code Playgroud)
updatehelpindex.sh(重新生成索引)
#!/bin/sh
hiutil -C -f MyApp.help/Contents/Resources/English.lproj/MyApp.helpindex
MyApp.help/Contents/Resources/English.lproj/
Run Code Online (Sandbox Code Playgroud)
我们进行构建,将文件夹放入Applications文件夹中,以便注册应用程序+帮助.我们甚至尝试重启或注销/登录,但我们什么也得不到.我知道这是一个非常繁琐的过程,但我们尝试的任何东西似乎都没有用.我们希望能够做的就是使用NSHelpManager打开帮助锚点.毫无疑问,这可以在10.6+中运行,因为许多其他应用程序都这样做(一些报告表明它不适用于10.7/8,但它们必须是不真实的).
想法?
编辑(文件夹结构):
这是在MyProj.help文件夹中,该文件夹位于整个Cocoa项目的子目录中,名为"help".
+ Contents
Info.plist
+ Resources
+ shrd
(a bunch of image files)
+ English.lproj
MyProj.helpindex
index.html
+ css
+ pgs
+ gfx
Run Code Online (Sandbox Code Playgroud)
在文件夹中正是如预期的那样,'css'中有一堆CSS文件,'pgs'有HTML页面,'gfx'有图像文件.
我正在尝试选择具有多个条件的元素,例如我现在正在执行以下操作:
$('#myspan').find('input:visible').each(myfunc);
Run Code Online (Sandbox Code Playgroud)
虽然我知道你可以做的事情,$('#myspan input:visible')但它对我不起作用.我需要检查跨度#myspan内可见和检查的输入.有任何想法吗?
我希望我们将对我们的系统进行大修以使用ASP.NET MVC,但是所提供的所有示例都倾向于使用LINQ to SQL.LINQ开发人员告诉我们它实际上比调用存储过程慢.
此外,如何使用MVC调用存储过程进行输出?我不完全确定LINQ能满足我们的需求,因为我们的存储过程非常庞大且复杂.有什么想法吗?
对于我正在处理的Web应用程序,我遇到了一个非常令人沮丧的问题(我最初并没有写它).它使用框架进行足够的布局.我遇到的问题是所有具有背景颜色和通过CSS设置边框的元素默认为100%宽度.我刚刚测试了div元素,段落元素等.
我完全删除了样式表,然后对其进行了测试,我遇到了同样的问题,因此不是导致问题的样式表.
我写了一个快速测试,以确保它不是冲突的代码,并使用与我们相同的doctype和xmlns - 我得到了同样的问题.这是示例代码.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
#test {
border:1px solid #ccc;
background-color:#ddd;
}
</style>
</head>
<body>
<div id="test">
Test information!
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
css ×2
jquery ×2
nhibernate ×2
.net ×1
autocomplete ×1
automapper ×1
c++ ×1
html ×1
javascript ×1
jquery-ui ×1
linq ×1
objective-c ×1
vector ×1
xcode ×1