小编Use*_*ser的帖子

ASP.NET MVC,ActionFilters,静态类和传递数据

我想听听您对以下情况的意见和建议:

我已经定义了一个自定义的ActionFilter,它可以完成一些工作并带来一些价值.我想在控制器动作和模型中使用该值.

现在,我可以使用TempData将此值从ActionFilter传递给任何控制器操作方法,然后将此值分配给传递给返回视图的所有模型.

我相信它会起作用,但是这个TempData会在会话中出现,当时没有人真正需要它.该值应该在单个请求期间专门用于代码,之后它会有效地使其无效.

我提出了两个选择:

  1. 在ActionFilter中,我在OnActioExecuting()的TempData中设置了这个值,然后在OnActionExecuted()中删除它.我是否正确理解,当调用OnActionExecuted时,控制器操作已完成,响应已经生成,并且此TempData内容尚未进入会话YET?

  2. 在我的任何自定义静态类(逻辑)中,我只为这个值定义一个公共属性,并在需要时使用它.在OnActionExecuting()和实际执行控制器方法之间,这个静态字段是否会丢失?在服务器上的请求处理期间是否还有其他问题可能会丢失此值?

还有其他/更好的选择我还没考虑过吗?

.net architecture asp.net-mvc static-classes action-filter

6
推荐指数
1
解决办法
2331
查看次数

如果所有单元格都为空,是否会显示表格行?

我有一个空表行只是为了分隔行.

<tr>
  <td colspan="5"></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

它在IE,FF,Opera和Safari中呈现.问题是,我是否应该在其中加入一些内容,或者可以保留原样?

喜欢:

<tr>
  <td colspan="5">&nbsp;</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

html html-table

5
推荐指数
2
解决办法
3万
查看次数

如何让Visual Studio在视图/页面上执行重构?

假设我有一个模型和一个显示此模型属性的视图.

public class UserModel
{
    public string UserName { get; set; }
    .................
}
Run Code Online (Sandbox Code Playgroud)

视图中的某个地方......

<%= Model.UserName %>
Run Code Online (Sandbox Code Playgroud)

现在我重命名其中一个属性(比如,UserName => FullUserName),VS将建议执行重构,这意味着对该属性的引用进行项目范围的重命名.除了在视图中,它在代码中的任何地方都能正常工作.

为什么?有一个设置可以在项目构建中编译视图.为什么它不会在那里执行简单的小重构?

有没有办法说服它?

asp.net-mvc refactoring visual-studio

5
推荐指数
1
解决办法
327
查看次数

为什么hierarchyid SQL数据类型没有等价物?

我理解,我们必须将此类型映射为二进制文件,以便在应用程序代码中找到它.但是为什么没有与所有这些类型方法完全等价的东西呢?

我们如何在代码中使用?或者我们不应该在SQL环境之外使用它?

编辑:问题还扩展到地理和几何类型.

sql sql-server hierarchyid

5
推荐指数
1
解决办法
2006
查看次数

什么是结对编程?

这个术语在英语社区似乎很常用.我好奇它是什么?是两个学生一起在一台PC上编码还是什么?这个组织(不管它是什么)只在美国使用吗?

pair-programming

4
推荐指数
3
解决办法
1151
查看次数

散列和盐渍密码如何使应用程序安全?

据我所知,最好保护密码免受网站管理员本人的影响,因为他可以尝试使用相同的密码来接收用户的电子邮件并登录他的邮箱(因为许多用户在任何地方都使用相同的密码).

除此之外,我没有看到重点.我知道这会使字典攻击变得更加困难但是......如果有人未经许可进入数据库,那么担心密码是否为时已晚?这家伙现在可以访问数据库中的所有表格,并且可以获取所有数据并执行他想要的任何操作.

或者我错过了什么?

security passwords

4
推荐指数
5
解决办法
1159
查看次数

当我在派生类中时,如何"取消绑定"附加到基类中的事件的事件处理程序?

我曾经遇到过一种情况,我不得不在我的某个派生类中覆盖事件处理程序.遗憾的是,我不能"覆盖"它,因为实现逻辑严格地绑定到基类中的特定方法实现.

我的自然想法是首先从事件中"取消绑定"原始事件处理程序,然后绑定我自己的全新方法.所以我尝试使用" - ="运算符,如:

myObject.SomeEvent -= new EventHandler (BaseClass.SomeEventHandler)
Run Code Online (Sandbox Code Playgroud)

此时编译器抱怨它无法访问私有方法SomeEventHandler.由于基类是库的一部分,我真的不想修改它的实现(尽管只是因为它似乎只是将"私有"变成"受保护");

将事件处理程序附加到事件非常简单.为什么摆脱一个这么难?

为什么我想要它?因为基本实现存在一些问题(只是没有处理我们的特定情况)所以我想重新定义它.但即使在我附加了我的事件处理程序之后,基本实现仍然会被执行.由于它正在进行某种重定向,因为重定向后请求处理在服务器上被破坏,我自己的实现永远不会运行.

反正有没有从库中删除基类中的事件处理程序而不修改它的实现?

c# event-handling

4
推荐指数
1
解决办法
2611
查看次数

有没有办法在我的本地计算机上替换127.0.0.1用于测试目的?

我知道这可能听起来很愚蠢但无论如何.也许有一招?

我只是希望本地Web服务器接收来自我本地计算机的请求,但不知何故看到不同的IP地址?即使是与臭名昭着的127.0.0.1不同的单一内容也会提供很大的帮助.

有没有可用的选择?

networking development-environment ip-address test-environments loopback-address

4
推荐指数
1
解决办法
3719
查看次数

如何强制从搜索引擎索引中删除页面?

情况:Google已在论坛中为一个页面编制了索引.该线程现已删除.如何/是否可以让谷歌和其他搜索引擎删除缓存副本?我怀疑他们会有什么反对,因为链接页面不再存在并保持索引更新和有效应该符合他们的最佳利益.

这是可能的还是我必须等待几个月才能进行索引更新?或者页面现在会永远存在吗?

我不是相应网站的所有者,因此我无法更改robots.txt.我想强制更新为"第三方".

我还注意到,我在两天前创建的该资源上的新页面已经在缓存中.鉴于我可以估计删除此域上的无效页面需要多长时间?

编辑:所以我做了测试.不到两个月的谷歌花了一个页面.很长一段时间......

caching search-engine web-crawler

3
推荐指数
1
解决办法
603
查看次数

是否可以从一个存储过程中调用另一个设置较低事务隔离级别的存储过程?

我有一堆实用程序只检查数据库中的某些条件并返回标志结果.这些过程使用READ UNCOMMITTED隔离级别运行,相当于WITH NOLOCK.

我还有更复杂的程序,使用SERIALIZABLE隔离级别运行.他们也恰好在其中进行了同样的检查.

所以我决定从这些复杂的程序中调用这些检查程序,而不是复制检查代码.

基本上它看起来像这样:

CREATE PROCEDURE [dbo].[CheckSomething]
AS
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    BEGIN TRANSACTION

    -- Do checks

    COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

CREATE PROCEDURE [dbo].[DoSomethingImportant]
AS
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

    BEGIN TRANSACTION

    EXECUTE [dbo].[CheckSomething]

    -- Do some work

    COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

那样做可以吗?暂时激活的较低隔离级别会以某种方式破坏更高级别的保护还是一切都完全安全?

编辑:执行顺利,没有任何错误.

sql-server stored-procedures transactions transaction-isolation

3
推荐指数
1
解决办法
2512
查看次数