我安装了Visual Studio 2012,然后去发布一个针对.NET 4.0框架的应用程序.由于这些机器上的设置,我们目前无法定位4.5.我们还使用"从与我的应用程序相同的位置下载先决条件"功能.
从Visual Studio 2012部署时,我收到以下错误:
要在"先决条件"对话框中启用"从我的应用程序的相同位置下载先决条件",必须将项目"Microsoft .NET Framework 4(x86和x64)"的文件"DotNetFX40\dotNetFx40_Full_x86_x64.exe"下载到本地计算机.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=239883.
如果转到该链接,它会告诉您导航到Package.xml文件,并找到实际先决条件的链接.就我而言,它应该转到http://go.microsoft.com/fwlink/?linkid=182805.使用该链接,它下载了一个名为dotNetFx40_Full_setup.exe的软件包.我把它放在/Packages/DotNetFX40文件夹中.
当尝试从Visual Studio 2012再次发布时,我得到了同样的错误.它似乎不喜欢这个文件.
如果我现在使用Visual Studio 2010将相同的应用程序发布到同一位置,它仍然可以正常工作.
如何使用Visual Studio 2012?
我正在将ASP.net MVC 3用于一个项目,并且在这一点上我了解了更多信息,但是还试图了解它与我使用了很长时间的WebForms世界之间的区别。以前,在WebForms中,您只是将字段放在那里,添加一个按钮,创建一个事件,然后通过回发处理所需的一切。
例如,我有一个简单的视图,显示有关错误的详细信息。我想将有关此错误的一些信息推送到我们的问题跟踪器的API。可以说仅是错误的主题和内容。我会在HTML中执行以下操作:
<form action="@Url.Action("Send")" method="post">
<input id="subject" name="subject" type="text" value="@Model.subject" />
<br />
<input id="content" name="content" type="text" value="@Model.content" />
<br />
<input type="submit" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)
我发现命名输入ID以匹配控制器中的参数名称将使我传递这些参数。这类似于您在Scott Guthrie的较早的文章中看到的内容。
首先,我想在我的Errors控制器中调用“发送”操作,而不是在Details中。这实际上确实调用了“发送”操作,但随后重定向到了我不希望它执行的本地主机/错误/发送。
我希望能够提交此表单,该表单将调用并执行操作并使用远程API进行工作,然后在当前页面上更新一条消息,指出错误已转移。
将问题提交给错误跟踪器后,例如,如何在原始页面上显示DIV,将内容传回给它(例如,在问题跟踪器中指向问题的链接)?
更新:这是我在控制器中正在做的事情:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/redmine/issues.json");
request.Credentials = new NetworkCredential("username", "password");
request.Method = "POST";
request.ContentType = "application/json";
request.Accept = "application/json";
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("'issue': { " +
"'project_id': 'project', " +
"'subject': 'Test issue'" +
"}");
}
WebResponse response = …Run Code Online (Sandbox Code Playgroud) 我有一个数据绑定的组合框。在这个列表中,我需要一个分隔符。由于这是数据绑定,我做了一些与这篇文章非常相似的事情。我的数据库返回列表,包括一个 '-' 来标记分隔符需要去的地方,数据触发器使它成为一个分隔符。
<ComboBox Name="cbAction" Grid.Column="1" Grid.Row="0" Margin="5,2,5,2" DisplayMemberPath="Description" SelectedValuePath="Code" SelectionChanged="cbAction_SelectionChanged">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Code}" Value="-">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
除了我在这里遇到的问题和一个小设计问题(我将在另一个问题中提出)之外,这大部分工作正常。
使用鼠标时,用户无法选择分隔符,这是正确的。但是如果用户使用向上/向下箭头选择项目,他们可以选择分隔符。这不是默认行为,它会跳过分隔符。
如果您的 XAML 具有各种 ComboBoxItems 和一个 Separator 项(使用向上和向下键时跳过分隔符),我如何使此分隔符的行为类似于它的行为方式
我刚开始使用EF Code First来实现一个简单的博客.
我有一个Post对象,它有一个产品变量
virtual Product Product { get; set; }
Run Code Online (Sandbox Code Playgroud)
Product类有一组类别
virtual ICollection<Category> Categories { get; set; }
Run Code Online (Sandbox Code Playgroud)
最后该类别有一个集合帖子.
virtual ICollection<Post> Posts { get; set; }
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一点运作良好.现在我想获得特定类别的帖子.我最初通过传递类别Id来在我的PostRepository中执行此操作:例如
public IQueryable<Post> GetPosts(int catId) {
var q = _db.Posts.Select(p => p).Distinct();
if (catId > 0)
q = q.Where(p => p.Product.Categories.Any(c => c.ID == catId));
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但我也使用CategoryRepository来获取我的类别.由于该类别有一个产品列表,而这些产品又有一个帖子列表,我认为最好只使用它,并从我的PostRepository中删除该类别.
但是,我遇到了一个问题.要获得帖子,我在我的控制器中使用它:
model.Category = _cr.GetCategory(catId);
model.Posts =
new PaginatedList<Post>(model.Category.Products.Select(p => p.Posts)
.AsQueryable(), pageNumber, _defaultPageSize);
Run Code Online (Sandbox Code Playgroud)
PaginatedList是NerdDinner接收IQueryable的那个.现在,这个错误,因为我传递了一个
IQueryable<ICollection<Post>>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何从我的Category实体中获得IQueryable?我确定答案很简单,但我一直在尝试各种组合无济于事.