我有一个使用Visual Studio 2010构建的安装项目.
安装程序在将应用程序及其所有依赖项安装到正确的子目录和程序数据目录方面工作正常.
但是,我注意到安装程序创建的每个目录(根文件夹及其所有子目录)都不提供"写入"权限.添加到"用户"组目录的唯一权限是:
无论用户是否将应用程序安装为"管理员",都会发生这种明显的默认权限设置.
对我来说,安装程序没有给正在安装的应用程序使用的文件夹赋予"写入"权限,这似乎很奇怪 - 安装程序在ProgramData应用程序数据库的文件夹中创建的文件夹更加令人困惑.获得"写"权限.
我的问题是,有没有办法配置安装项目,以便在创建文件夹时,我们可以告诉它提供什么类型的权限以及向谁提供.在我的情况下,我需要提供(应用程序的)根目录及其所有子目录,以及放置在ProgramData"用户组"的"读/写"文件夹文件夹中的文件夹.从技术上讲,我很乐意向"用户组"提供"完全控制"目录.
在我的ASP.NET的Web Config文件中,我定义了以下位置元素:
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="dir1">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
<location path="dir2">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
上面的示例指定除了两个目录dir1和dir2之外,所有目录都将被锁定到匿名用户.
我很好奇是否有我可以使用的语法,这将允许我在一个位置元素中定义多个目录.例如,如果我们可以做这样的事情会很方便......
<location path="dir1,dir2,etc">
<system.web>
<authorization>
<allow users="?"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud) 我有一个Visual Studio 2010 Windows窗体应用程序,其中包含其他类将继承的Form基类.基类的构造函数接受子类将传递给基类的参数.
例:
public partial class BaseForm : Form
{
public BaseForm(int number)
{
InitializeComponent();
}
}
public partial class ChildForm : BaseForm
{
public ChildForm(int number)
: base(number)
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我尝试在VisualStudio的设计视图模式下打开ChildForm时,我收到以下错误:
找不到类型"MyProject.BaseForm"的构造函数.
注意:无论错误如何,项目编译并运行正常.
如果我用不包含任何参数的构造函数重载构造函数,我可以避免错误.
示例:(这消除了错误)
public partial class BaseForm : Form
{
public BaseForm(int number)
{
InitializeComponent();
}
public BaseForm()
{
InitializeComponent();
}
}
public partial class ChildForm : BaseForm
{
public ChildForm(int number)
: base(number)
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何创建一个不包含无参数构造函数的基类并避免设计视图错误?
c# inheritance base-class visual-studio-2010 windows-forms-designer
在我的Visio 2007 UML文档中,我无法弄清楚如何向返回泛型List<MyCustomType>类型的接口添加操作.
例如:
假设我有一个名为"MyClass"的类和一个名为"IFace"的接口.IFace有一个返回MyClass通用列表的方法的签名.
为清楚起见,这是C#代码的示例:
namespace StackO
{
public interface IFace
{
List<MyClass> SomeMethod(string data);
}
public class MyClass
{
}
}
Run Code Online (Sandbox Code Playgroud)
这是我卡住的截图:
似乎将指定a List<MyClass>作为我的返回类型的唯一方法是创建另一个显式写为的用户定义数据类型List<MyClass>.如果是这种情况,那就这样吧.但是,我发布这篇文章是希望有更好/正确的方法来做到这一点.
如何将Visio接口操作的返回类型定义为用户定义数据类型的通用列表?
使用T-SQL,我想执行一个UPDATE语句,只有在定义了相应的变量时才会设置列.
这是我想要完成的一个简单的伪tsql示例:
--Declaring vars
@ID int,
@Name nvarchar(20),
@Password nvarchar(10)
--Run the update
UPDATE User
SET
IF LEN(@NAME) > 0
Name = @Name,
IF LEN(@Password) > 0
Password = @Password
Run Code Online (Sandbox Code Playgroud)
通过阅读IF条件如何在T-SQL中工作,我可以看出,为了完成与上面的伪代码相同的结果,我将不得不为每个IF条件创建一个UPDATE语句 - 这就是我想要的避免不得不这样做.
是否可以仅使用一个UPDATE语句基于条件动态设置字段/列? - 如果是的话,怎么样?
可能重复:
属性的客户端ID(ASP.Net MVC)
有没有办法让Razor在使用Html.LabelFor <>帮助器时为Label元素呈现ID属性?
例:
.cshtml page
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.Foo)
@Html.TextBoxFor(m => m.Foo)
}
Run Code Online (Sandbox Code Playgroud)
呈现页面
<form ...>
<label for="Foo" id="Label_Foo" />
<input type="text" name="Foo" id="Foo" />
</form>
Run Code Online (Sandbox Code Playgroud)
仅供参考 - 我想在标签上添加ID的唯一原因是CSS设计.我更喜欢用ID引用Label而不是将Label包装在一个块(即div)中,然后设置块的样式.
我试图使用T-SQL的MERGE语句插入许多记录,但是当源表中有重复记录时,我的查询无法INSERT.失败的原因是:
我正在寻找一种方法来更改我的MERGE语句,以便它忽略源表中的重复记录和/或尝试/捕获INSERT语句以捕获可能发生的异常(即所有其他INSERT语句将运行而不管可能会发生几个坏蛋 - 或者,或许,有更好的方法来解决这个问题?
这是我正在尝试解释的查询示例.下面的示例将向临时表中添加100k记录,然后尝试将这些记录插入目标表中 -
编辑 在我的原始帖子中,我只在示例表中包含了两个字段,这些字段让位给SO的朋友提供DISTINCT解决方案以避免MERGE语句中的重复.我应该提到,在我的现实问题中,表有15个字段,其中15个字段中有两个字段是CLUSTERED PRIMARY KEY.所以DISTINCT关键字不起作用,因为我需要选择所有15个字段并忽略基于两个字段的重复项.
我已经更新了下面的查询以包含一个字段col4.我需要在MERGE中包含col4,但我只需要确保只有col2和col3是唯一的.
-- Create the source table
CREATE TABLE #tmp (
col2 datetime NOT NULL,
col3 int NOT NULL,
col4 int
)
GO
-- Add a bunch of test data to the source table
-- For testing purposes, allow duplicate records to be added to this table
DECLARE @loopCount int = 100000
DECLARE @loopCounter int = 0
DECLARE @randDateOffset int
DECLARE @col2 datetime
DECLARE @col3 int
DECLARE @col4 …Run Code Online (Sandbox Code Playgroud) 要将数字格式化/显示为等效的二进制形式(在C#中),我总是简单地调用:
Convert.ToString(myNumber, 2);
Run Code Online (Sandbox Code Playgroud)
今天,我刚刚意识到我一直在调用的.ToString()重载不支持大于9223372036854775807的值.注意.ToString()重载的签名是:.ToString(long, int).其中"long"是64位有符号值,最大值为9223372036854775807.
换句话说,使用C#,当我运行它时:
Convert.ToString(9223372036854775808,2);
Run Code Online (Sandbox Code Playgroud)
我收到此异常消息并不奇怪(由于签名):
'System.Convert.ToString(object,System.IFormatProvider)'的最佳重载方法匹配有一些无效参数 - 参数2:无法从'int'转换为'System.IFormatProvider'
我的问题:是否有.NET函数允许我们将大于9223372036854775807的值转换为等效的二进制格式?
我的控制器内有两个动作(shoppingCartController)
public ActionResult Index()
{
//some stuff here
return View(viewModel);
}
public ActionResult AddToCart(int id)
{
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
无论如何,通过在浏览器中键入url来阻止用户直接调用索引操作?
例如:如果用户浏览shoppingCart/index要重定向到Home/Index.
我第一次玩MVC 4来查看与MVC 3相比已经更改/添加/等等的内容.
首先,我创建了一个空白的MVC 4 Web应用程序,并从头开始构建.
我注意到的第一件事与MVC 4不同的是,以下web.config设置对网页的可访问性没有影响:
<configuration>
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
.....
</configuration>
Run Code Online (Sandbox Code Playgroud)
回到MVC 3,上面的授权设置将拒绝所有匿名用户访问站点内的任何内容.但是,如果我将相同的设置添加到MVC4 Web.config文件中,则匿名者可以自由选择他/她选择的URL.
我在MVC 4中需要做什么来锁定所有路径,就像我在MVC 3中那样?
asp.net-mvc forms-authentication web-config asp.net-authorization
c# ×3
.net ×2
t-sql ×2
web-config ×2
asp.net ×1
asp.net-mvc ×1
base-class ×1
binary ×1
conditional ×1
generic-list ×1
html-helper ×1
inheritance ×1
location ×1
merge ×1
path ×1
razor ×1
sql ×1
sql-server ×1
visio ×1