我对使用WPF/Silverlight的MVVM非常熟悉,但这是我第一次尝试使用MVC Web应用程序...这只是我的背景.
我创建了一个名为TestSitesController的控制器,它是从我的实体框架模型中的"站点"模型类(生成读/写操作和视图的模板)中自动生成的.我修改的唯一的东西是3个点,对于某些方法,有一个默认参数Guid id = null.我只是摆脱了"= null"一切正常.这是我改变的一个例子
public ActionResult Delete(Guid id = null)
{
//....
}
Run Code Online (Sandbox Code Playgroud)
这被改为
public ActionResult Delete(Guid id)
{
//....
}
Run Code Online (Sandbox Code Playgroud)
Site模型没有什么特别的SiteId,Abbreviation和DisplayName ...试图让这个问题尽可能简单.好的,所以我运行网站并转到htpp://.../TestSites/,一切都很完美.
我注意到我的所有视图(创建,删除,详细信息和编辑)都使用@model MVCWeb.MyEntities.Site,我现在完全可以使用它; 但在Index.cshtml视图中,我注意到它正在使用
@model IEnumerable<MVCWeb.MyEntities.Site>
Run Code Online (Sandbox Code Playgroud)
这适用于生成的模板,但我想使用"复合视图模型",也许这是我试图混合我的MVVM知识,但如果可能的话,将坚持使用.在我看来,复合视图模型只是一个特定于一个视图的模型,该视图由一个或多个实体模型以及像SelectedSiteId等其他属性组成.
所以我创建了一个非常简单的ViewModel,名为TestSitesViewModel
public class TestSitesViewModel
{
//Eventually this will be added to a base ViewModel to get rid
//of the ViewBag dependencies
[Display(Name = "Web Page Title")]
public string WebPageTitle;
public IEnumerable<MVCWeb.MyEntities.Site> Sites;
//Other Entities, IEnumberables, or properties go here
//Not important for this example
}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器中添加了一个名为IndexWithViewModel的动作方法
public ActionResult …
Run Code Online (Sandbox Code Playgroud) 我对MVC很新...我对Silver-light,WPF和MVVM有很多了解,但对MVC知之甚少.我正在关注微软网站上的主要教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/adding-a-view.我相信我在第3条第9条.最初它告诉我使用"Razor"的"View Engine"创建我的MVC网站.我选择使用"ASPX"而不是"Razor",因为我认为我会减少第三方依赖.
在启动新的MVC Web应用程序时,最好使用"Razor"而不是"ASPX".说实话,我不知道区别.如上所述,我选择ASPX来避免任何额外的第三方dll或代码.如果最好选择ASPX,我有点困惑为什么MS网站上的教程告诉我从Razor开始.
任何人都可以了解我何时应该使用"ASPX"视图引擎而不是"Razor"视图引擎?
主要问题是允许在有用性和内存方面修改this关键字的含义是什么; 为什么在C#语言规范中允许这样做?
如果选择这样做,可以回答其他问题/子部分.我认为对它们的回答有助于澄清主要问题的答案.
我试着回答你在C#或.NET中看到的最奇怪的角落是什么?
public struct Teaser
{
public void Foo()
{
this = new Teaser();
}
}
Run Code Online (Sandbox Code Playgroud)
我一直试图解决为什么C#语言规范甚至会允许这样做. 第1部分.有什么可以证明这是可以修改的吗?这一切都有用吗?
该答案的评论之一是
从CLR到C#:他们之所以这样做是因为你可以在另一个构造函数中调用struct的无参数构造函数.如果您只想初始化结构的一个值并希望其他值为零/ null(默认),则可以编写公共Foo(int bar){this = new Foo(); specialVar = bar;}.这样效率不高且不合理(specialVar分配了两次),但仅限于FYI.(这就是书中给出的理由,我不知道为什么我们不应该只做公共Foo(int bar):this())
子部分2. 我不确定我是否遵循这个推理.有人可以澄清他的意思吗?也许是一个如何使用它的具体例子?
编辑(忽略堆栈或堆主要点是关于内存释放或垃圾收集.而不是int []你可以用262144 public int字段替换它)同样从我的理解结构是在堆栈上创建而不是堆栈这个结构有一个1 Mb字节数组字段初始化
public int[] Mb = new int[262144];
Run Code Online (Sandbox Code Playgroud)
子部分3.当调用Foo时,它是否会从堆栈中删除?对我来说,似乎因为结构永远不会超出范围,所以它不会从堆栈中删除.今晚没有时间来创建一个测试用例,但也许明天我会为此做一个.
在下面的代码中
Teaser t1 = new Teaser();
Teaser tPlaceHolder = t1;
t1.Foo();
Run Code Online (Sandbox Code Playgroud)
第4部分.t1和tPlaceHolder是否占用相同或不同的地址空间?
很抱歉提出一个3岁的帖子,但这个确实让我头疼.
我是关于stackoverflow的第一个问题,所以如果我对这个问题有问题,请发表评论,我会编辑.
2天之后,即使我已经选择了一名获胜者,我也会在这个问题上投入50分,因为我认为答案需要合理的工作来解释问题.
我在排序哈希表时遇到问题.我已经将我的代码分解为只是必需品,以免用原始脚本压倒任何人.
Write-Host "PowerShell Version = " ([string]$psversiontable.psversion)
$h = @{}
$Value = @{SortOrder=1;v1=1;}
$h.Add(1, $Value)
$Value = @{SortOrder=2;v1=1;}
$h.Add(2, $Value)
$Value = @{SortOrder=3;v1=1;}
$h.Add(3, $Value)
$Value = @{SortOrder=4;v1=1;}
$h.Add(4, $Value)
Write-Host "Ascending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder)
{
Write-Host $f.Value.SortOrder
}
Write-Host "Descending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder -descending)
{
Write-Host $f.Value.SortOrder
}
Run Code Online (Sandbox Code Playgroud)
输出是
PowerShell Version = 3.0
Ascending
2
1
4
3
Descending
2
1
4
3
Run Code Online (Sandbox Code Playgroud)
我确信这只是一个不知道正确用法的简单案例Sort-Object
.排序正常,Sort-Object Name
所以它可能与不知道如何处理Value.SortOrder
?
我为一个不到50人的小公司工作,我可能是我们与DBA最接近的事情......我实际上是一名程序员,但这不是重点.我们有SQL Server 2000
大约100个不同的数据库.几乎所有这些都具有关联的SQL登录,并且Login与DB_OWNER
特定数据库的数据库角色相关联.我们还有一些设置为DB_DATAREADER
数据库角色的登录.
我们购买了一台全新的机器(目前已有12年历史,并且担心硬件故障可能会导致我们的业务停机不可接受的时间).我们不升级SQL Server版本.我们将坚持2000年.
我的问题是最简单的方法是什么.我的想法是分离所有数据库,将它们复制到新机器,然后重新连接每个数据库.我将保持机器名称和IP相同,并在完成后删除旧服务器,因此不需要修改任何连接字符串.这似乎并不那么糟糕,并且很容易在周末完成.我这个方法的问题是,在我这样做之后,我需要从数据库中删除User,然后login
使用用户名/密码重新创建,然后为每个用户分配适当的角色.我只在这里待了5年,而且我没有每个特定数据库和程序正在使用的所有可能的用户名/密码.我不想破坏任何现有的程序或者必须去每台机器并更新它...或者甚至可能必须找到旧的源代码并重新编译...是的,我们的一些遗留的东西有用户名/密码硬编码在来源:(.
所以我想主要的问题是他们的一个script
,我可以将生成一个脚本,在新机器上现有的运行设置在现有的服务器上运行logins
,users
,roles
具有相同的用户名/密码为过吗?
如果有一种更简单的方法将sql server实例从一台机器转移到另一台机器; 我听见了.
仅供参考我们尝试从现有服务器创建VHD以在虚拟机中使用但是已经使用了该路由.我们从未能让机器启动进入Windows.认为这是驱动程序问题.
这两个NuGet包有什么区别?如果我正在创建一个.net 4.51项目,我应该使用一个吗?我过去曾使用过Microsoft.Bcl.Immutable的测试版,但只是好奇一个人是否会比另一个更好或者使用一个优于另一个的利弊.
我已经检查并尝试了一些关于StackOverflow的建议,但它们似乎都没有用.我汇总了一个我想要完成的事情的例子.
[System.Random] $rand = New-Object System.Random
$randomNumbers = New-Object int[] 10;
[int[]] $randomNumbers;
for($i = 0; $i -lt $randomNumbers.Length; $i++)
{
($randomNumbers[$i] = $rand.Next(256)) 2>&1 | Out-Null;
}
Run Code Online (Sandbox Code Playgroud)
我试过了
> $Null
|Out-Null
2>&1
Run Code Online (Sandbox Code Playgroud)
但它们似乎都没有抑制输出.它连续显示10个零.每个作业一个.如何抑制输出?
可以找到完整的源代码http://plnkr.co/edit/rQSg5eMhm9uc9dSWnWEU?p=preview
在index.html文件中,如果我一次只使用一个控制器,它就可以工作.那是我使用的
<body>
<div id="inputExample" ng-app="AngularJSTestBedWebApp" ng-controller="AngularJSInputExampleController">
input example: <input type="text" ng-model="inputValue" /><br/>
This is the updated value: {{inputValue}}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
或者如果我使用
<body>
<div id="scopeExample" ng-app="AngularJSTestBedWebApp" ng-controller="AngularJSScopeExampleController">
{{understandingScope}}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
它也会奏效.但是,如果我同时使用两个控制器,如
<body>
<div id="scopeExample" ng-app="AngularJSTestBedWebApp" ng-controller="AngularJSScopeExampleController">
{{understandingScope}}
</div>
<div id="inputExample" ng-app="AngularJSTestBedWebApp" ng-controller="AngularJSInputExampleController">
input example: <input type="text" ng-model="inputValue" /><br/>
This is the updated value: {{inputValue}}
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
第二个控制器永远不会被使用.永远不会为{{inputValue}}分配默认值,也不会在文本框中输入时更新.它实际上只是说"{{inputValue}}".
我敢肯定这可能很容易,但我对AngularJS很新.在此先感谢您的帮助.
几个小时以来我一直在努力解决这个问题,似乎无法弄清楚发生了什么或与之相关的任何相关网站.我所要做的就是同时使用Ajax Control Toolkit和JQuery.
以下是重新创建问题所需的唯一代码.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="TestWebsite.TestForm" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"
language="javascript" />
</head>
<body>
<form id="form1" runat="server">
<ajax:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</ajax:ToolkitScriptManager>
<div>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果它很重要我使用的是Visual Studio 2010专业版.我的asp.net网站瞄准.NET 4.0框架.我使用的是版本为4.1.60501.0的AjaxControlToolkit.dll.Jquery是1.7.2分钟版本.
如果我注释掉jquery脚本行或ToolkitScriptManager我没有得到任何javascript错误.如果他们都包括在内我得到错误
"Microsoft JScript运行时错误:Sys.ArgumentException:找不到ID为'form1'的元素.参数名称:elementOrElementId"
Stacktrace给了我DomElement $ resolveElement(elementOrElementId,containerElement)javascript函数作为罪魁祸首.
任何帮助,将不胜感激.
我有一个带有列的表
ParameterValueId, SiteId, LocationId, ParameterId, SampleDateTime
Run Code Online (Sandbox Code Playgroud)
和其他一些专栏.
ParameterValueId
是主键.
我想创建一个不是唯一的索引来加速查询SiteId, LocationId, ParameterId, SampleDateTime
.
SiteId
SiteId
和LocationId
SiteId
,LocationId
和ParameterId
SiteId
,LocationId
,ParamterId
,和过滤器>=/<= SampleDateTime
我可以创建一个索引SiteId, LocationId, ParameterId, SampleDateTime
吗?
或者我需要创建4个索引?
我想我的问题是,如果我在4列上创建一个索引它是否会被使用,如果我只使用这些列中的1,2或3而不是所有4列,仍然会提高性能?
.net ×2
c# ×2
powershell ×2
.net-4.0 ×1
.net-4.5 ×1
ajax ×1
angularjs ×1
asp.net ×1
asp.net-4.0 ×1
asp.net-mvc ×1
hashtable ×1
indexing ×1
javascript ×1
login ×1
memory ×1
nuget ×1
performance ×1
razor ×1
razor-2 ×1
roles ×1
sorting ×1
sql ×1
sql-server ×1
t-sql ×1