问候,
我提前道歉,我没有对此进行过彻底的研究,以便自己回答这个问题,但我想这需要一些时间,而且在我投入更多时间学习它之前,我宁愿知道.我最初的研究中找不到任何东西..
如果您已经使用多层架构(数据层,逻辑层,表示层),为什么要使用ASP.Net MVC?除了控制器具有比逻辑层更多的功率之外.
我是否正确地认为我可以在MVC的Model部分中使用nHibernate和我的所有数据访问类,实体和映射?
使用控制器时,最好将大量逻辑分成单独的类,以便从多个控制器中调用它吗?或者我可以从控制器本身调用它们,考虑到我不希望所有这些都是动作,只是常规方法.
谢谢
nhibernate asp.net-mvc presentation-layer n-tier-architecture data-structures
我需要有关如何在ASP.Net MVC中为我的CSS,图像和JavaScript文件添加Expires Headers的建议或建议.
关键问题是软件不在一个位置.它分发给处理托管的客户,所以我宁愿有一个不需要在IIS中手动配置的解决方案,除非它是不可避免的!
我用Google搜索,大多数答案似乎都集中在通过控制器返回的内容上.虽然不能为JavaScript文件做到这一点..
正如标题所示,我在回发时维护代码时遇到问题.我在Head部分有一堆jQuery代码,这个工作正常,直到发生回发,之后它停止运行!
我怎样才能解决这个问题?头部没有在回发上阅读,有没有办法可以强制这种情况发生?
JavaScript是:
<script type="text/javascript">
$(document).ready(function()
{
$('.tablesorter tbody tr').tablesorter();
$('.tablesearch tbody tr').quicksearch({
position: 'before',
attached: 'table.tablesearch',
stripeRowClass: ['odd', 'even'],
labelText: 'Search:',
delay: 100
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我在Web应用程序中遇到了多对多关联和nHibernate会话的问题.
我正在使用的对象始终保持与会话的连接,但是往返于服务器.从来没有遇到过问题.到现在.我在班上添加了一个新的,多对多的关联.
这是多对多映射(名称更改为更有意义):
<bag name="ProductsToCategory" table="Tab_ProductsToCategory"" cascade="all-delete-orphan">
<key column="ProductID" />
<many-to-many class="CategoryClass" column="CategoryID" />
</bag>
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,它适用于初始加载.但是,后续调用访问此对象的服务器 - 该对象在Web会话中维护 - 导致此集合被破坏并抛出此错误:
没有懒惰地初始化集合,没有关闭会话或会话
奇怪.我想知道是否存在导致问题的多对多关联?这个多对多只添加到这个类而不是映射另一端的类,即"CategoryClass",因为我不需要它.在我添加此映射之前,Object似乎没问题.
有任何想法吗?
另外:我尝试简单地检查对象是否不再在会话中.不是.所以我打电话给:session.refresh(productClass)一切都得到了正确的更新,包括我麻烦的映射.然而.它将加载TWICE中的每个项目!该集合的项目数量是数据库中的两倍,每个项目出现两次.如果我能得到这个问题的答案,那么前一个问题并不重要.
如果您需要任何其他信息,请告诉我.干杯.
nhibernate session many-to-many lazy-loading nhibernate-mapping
我试图模拟ASP.Net MVC的Ajax.IsRequest()方法.我发现了如何做以使它返回true:
Expect.Call(_myController.Request.Headers["X-Requested-With"]).Return("XMLHttpRequest").Repeat.Any();
Run Code Online (Sandbox Code Playgroud)
这工作并返回true.现在我需要测试代码的另一个分支.我如何模仿它返回虚假?我试图完全删除模拟,它失败了:
System.NullReferenceException:对象引用未设置为对象的实例.]
如果我做:
Expect.Call(_templateReportController.Request["X-Requested-With"]).Return(null).Repeat.Any();
Run Code Online (Sandbox Code Playgroud)
它失败并出现同样的错误.
整个测试:
/// <summary>
/// Tests the Edit Action when calling via Ajax
/// </summary>
[Test]
public void Test_Edit_AjaxRequest()
{
Group group = new Group();
group.ID = 1;
group.Name = "Admin";
IList<Group> groupList = new List<Group>() { group };
Definition def = new Definition();
def.ID = 1;
def.Name = "Report";
def.LastModified = DateTime.UtcNow;
def.Groups.Add(group);
using (_mocks.Record())
{
Expect.Call(_myController.Request["X-Requested-With"]).Return("XMLHttpRequest").Repeat.Any();
Expect.Call(_DefBiz.GetAll<Group>()).Return(groupList);
Expect.Call(_DefBiz.Get<Definition>(1)).Return(def);
}
myController.DefAccess = _DefBiz;
PartialViewResult actual;
using (_mocks.Playback())
{
actual = (PartialViewResult)myController.Edit(1);
} …Run Code Online (Sandbox Code Playgroud) 所以,我有一个执行参数化LIKE查询的方法.该方法接收搜索参数/值,然后将其添加到准备查询的命令中.
它不起作用.它应该工作,当我编写值来直接搜索SQL字符串,没有参数化时,它确实有效!当我把它作为一个参数是不是!有任何想法吗.
这里有一些(假的,我已更改名称)示例代码.
myDataReader = SQLExecute("SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE 'Arrested Development%'")
Run Code Online (Sandbox Code Playgroud)
会工作.然而
Function MethodOfReturningHorror(ByVal TVShow as String) as SqlDataReader
{
dim command as new SQLCommand
command.connection = sqlconnection
command.CommandText = "SELECT * FROM TableOfAwesomeness WHERE BestTVShow LIKE '@tvShow%'"
command.Parameters.Add("tvShow",TVShow)
return command.ExecuteReader()
}
Run Code Online (Sandbox Code Playgroud)
为了懒惰/简洁,我错过了与问题无关的代码.所以忽略返回位和东西,所有重要的是数据读取器什么都不包含,而它在第一个例子中.我确信它与LIKE子句的参数化有关.
谢谢!
asp.net ×2
asp.net-mvc ×2
nhibernate ×2
.net ×1
javascript ×1
jquery ×1
lazy-loading ×1
many-to-many ×1
parameters ×1
postback ×1
rhino-mocks ×1
session ×1
sql ×1
sql-like ×1
unit-testing ×1