我最近在ASP.NET MVC 4中发现了我已经成功实现的区域,但是我@Html.ActionLink在Razor视图中遇到了帮助器的问题.此助手生成的URL似乎总是相对于当前页面的URL.
我将我的网站在IIS 7(Win7)中配置为应用程序虚拟目录/Foo.
我注册了两个区域:管理员和博客.我在AdminAreaRegistration.cs和BlogsAreaRegistration.cs文件中有默认代码.我添加namespaces = new[] { "MvcProject.Controllers" }到默认RouteConfig的默认值:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home", action = "Index", id = UrlParameter.Optional,
namespaces = new[] { "MvcProject.Controllers" }
}
);
}
}
Run Code Online (Sandbox Code Playgroud)
当我转到我的网站的主页:时http://localhost/Foo,它正确加载我的网站的"主页"页面.此时,所有操作链接都有正确的URL.
示例代码来自 MvcProject/Views/Shared/_Layout.cshtml
<h2>Main Navigation</h2>
<ul>
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("Blogs", "Index", "Blogs/Home")</li>
<li>@Html.ActionLink("Admin", "Index", "Admin/Home")</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这正确地将HTML呈现为: …
我有~30个SpecFlow功能文件,我最近从源代码控制中删除了Foo.feature.cs文件,因为我厌倦了解决Designer Generated代码中的合并冲突.
我没有从Visual Studio项目中排除或删除这些文件,因此Visual Studio仍然认为它们应该在那里,它们只是在硬盘上丢失了.
理想情况下,我只想单击一个根文件夹并重新生成文件后面的所有代码,但VS 2010和SpecFlow 1.9不存在这样的选项.我甚至可以通过编程从命令行重新生成它们,创建另一个自定义工具或添加预编译构建事件.
有没有办法为SpecFlow功能(*.feature.cs文件)重新生成所有Designer生成的代码,而无需右键单击每个.feature文件并单击"运行自定义工具"?
使用Test Automation的页面对象模型,我们将页面链接在一起,如下所示:
WebDriver driver = new WebDriver()
HomePage homePage = new HomePage(driver);
LoginPage loginPage = homePage.GoToLoginPage();
WelcomePage welcomePage = loginPage.Login();
etc
etc
Run Code Online (Sandbox Code Playgroud)
这样做的最大好处是,如果开发人员更改主页,使其不再链接到登录页面,我可以更新我的主页类,并在运行测试之前查看我需要更新的所有测试(有错误).
然而,对于小黄瓜,上面的每一行将形成一个单独的"步骤",因此是一个单独的方法.因此,如何进行这种连接?
是将页面对象类的实例(例如homePage,loginPage等)放入交叉gherkin语句持久性存储(例如specflow POCO或'World')的唯一方法吗?
我在php-html-mixed代码中遇到了一个非常奇怪的行为.我正在使用XAMPP 3.2.1(PHP 5.2.0)和IntelliJ IDEA 14.1.
这是我的代码看起来像(为了便于阅读,擦洗,如果你需要更多让我知道):
<?php
for($i=0; $i<count($stringArray); $i++) {
$pieces = explode($GLOBALS['delimiter'], $lineData[$i]);
?>
<div>
...
<input id="<?php echo $pieces[$someValidNumber]; ?>_identifier" ...>
...
<script>
// some javascript with <?php echo $variable; ?>
</script>
...
</div>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)
当循环运行n次时会发生什么,对于n-1,一切看起来都很好,但在第n次运行中,在<script>-section中,代码突然停止.HTML文件在所有标签关闭时正常结束.
这看起来如下(n = 4):
$('input[id$="MegaSteel_tons"]').val(output2);
$('#MegaSteel_cart').prop(
Run Code Online (Sandbox Code Playgroud)
或(n = 2):
$('input[id$="BarZwo_meters"]').val(output2);
$('#BarZwo_cart').prop('type', 'button').change
Run Code Online (Sandbox Code Playgroud)
请注意,随着n的增加,停止不会以确定的方式发生.这意味着当我尝试n = 3时,结果如下:
$('input[id$="Bar_meters"]').val(output2);
$('#Bar_cart').prop('type', 'button').change();
var price
Run Code Online (Sandbox Code Playgroud)
我知道了.是什么导致这个?
按要求提供更多代码:
$lineData = array();
$f = fopen('products.csv', 'r');
while (($line = fgetcsv($f)) !== false) {
if (strpos($line[0], …Run Code Online (Sandbox Code Playgroud) 我正在为NuGet包编写我的第一个安装PowerShell脚本.我正在尝试将文件lib夹中的tools文件复制到另一个NuGet包的文件夹中.默认的install.ps1脚本有四个参数,其中两个是:
它们似乎是某种"对象",但我不确定它们包含哪些属性和方法.我在网上做了一些搜索,但还没有找到这些参数的参考或任何文档.
查看此StackOverflow帖子,该问题包含指向Project Interface的链接.这$project是NuGet install.ps1文件中的内容吗?
我试图从Visual Studio 2010命令提示符运行SpecFlow测试,我收到一个相当迟钝的错误消息:
单元测试适配器引发异常:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.
有关我的VS2010项目设置的一些信息:
我有一个post-build事件,它将我的NuGet包目录中的一些DLL文件复制到目标目录:
copy $(SolutionDir)packages\SpecBind.1.2.1.71\lib\net45\SpecBind.dll $(TargetDir)
copy $(SolutionDir)packages\SpecBind.CodedUI.1.2.1.71\lib\net45\SpecBind.CodedUI.dll $(TargetDir)
Run Code Online (Sandbox Code Playgroud)
没有这个,mstest无法以某种方式加载许多SpecFlow程序集.
测试项目App.config的相关部分
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
<section name="specBind" type="SpecBind.Configuration.ConfigurationSectionHandler, SpecBind" />
</configSections>
<connectionStrings>
...
</connectionStrings>
<specFlow>
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<unitTestProvider name="MsTest" generatorProvider="Specflow.CodedUI.MsTestCodedUiGeneratorProvider, Specflow.CodedUI" runtimeProvider="TechTalk.SpecFlow.UnitTestProvider.MsTest2010RuntimeProvider, TechTalk.SpecFlow" />
<stepAssemblies>
<!-- This attribute is required in order to …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET 4.0 WebForms应用程序.我需要在Global.asax中访问HttpContext.Current.Session并设置AcquireRequestState事件(或事件后面的事件)中的值,并且我发现了一种特殊的行为.
假设我在IIS中有一个虚拟目录(在我的情况下是版本7)Foo.在那我Default.aspx作为主页.示例Global.asax文件如下:
<%@ Application Language="C#" %>
<script runat="server">
void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext.Current.Session["key"] = "value";
}
</script>
Run Code Online (Sandbox Code Playgroud)
当我http://localhost/Foo/Default.aspx在浏览器中访问时,它运行正常.当我访问时,http://localhost/Foo/我得到一个NullReferenceException我在会话上设置值的地方.唯一的变化是浏览器中的URL.它们最终会访问同一页面,但框架的行为会有所不同,具体取决于URL是否只包含文件夹名称,还是包含aspx文件.
检查if (HttpContext.Current.Session != null)对我来说不是一个选项,因为我需要在会话中为每个请求设置一个值,这是不可协商的.
IIS中是否存在我缺少的配置设置,或者这是一个错误/被遗忘的功能?
另一个问题的答案暗示IIS不会为每种请求加载会话,例如样式表不需要会话.也许这种行为正在发生,因为IIS无法提前告诉该文件夹名称是否会导致执行aspx文件或者它是否会传递静态HTML文件?
更新:我甚至尝试重新排序IIS查找的默认文档,以便"default.aspx"位于列表的顶部,例如
我仍然遇到同样的问题.
更新:
事件处理程序只被触发一次,因为它导致了一个NullReferenceException.我已经做了一些额外的阅读,我知道ASP.NET会为每个请求触发这些事件,即使对于CSS或JavaScript文件也是如此.此外,没有为静态文件加载会话对象,因为没有访问会话的代码,因此无需加载对象.即便如此,第一个请求是对网页的请求,该请求将需要会话,并且会话为空.
@DmytroShevchenko问:
首先添加一个警卫检查,
if (HttpContext.Current.Session != null)以便没有NullReferenceException抛出.然后尝试看一下,也许这个事件将会第二次被解雇,会话可用.
修改后的代码
void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null) …Run Code Online (Sandbox Code Playgroud) 我在Windows10上下载了Jenkins.当我尝试访问jenkins时,它要求输入用户名和密码.我已经阅读了同一问题的主题.但我没有在Jenkins文件夹下找到任何秘密文件夹或config.xml文件.
我有Visual Studio 2010,我们有两个VS解决方案.第一个是Web应用程序,第二个是SpecFlow测试.让两个Visual Studio实例同时运行只是为了运行SpecFlow功能正在吃掉所有可用的RAM,导致速度变慢.
我已经在Google上和StackOverflow上进行了一些搜索,并在MSTest命令行工具上仔细阅读了MS文档,但我还没有找到答案.完整的SpecFlow测试套件需要大约45分钟才能完成,我真的只需要运行几个场景.
我想知道是否有办法使用MSTest从命令行运行单独的SpecFlow功能,甚至是个别方案?
我正在使用Dictionary<string, T>数据结构将电话号码存储在视图模型中。用户可以在将它们发回服务器之前在客户端添加或删除它们。
背景故事:我正在使用字典,因为List<T>在 ASP.NET MVC 5 中使用数据结构需要表单字段的名称包含从零开始的顺序索引,并且 JavaScript 在屏幕上添加或删除这些字段变得非常痛苦无需重新排序索引值。我发现使用字典很容易。现在我正在做一个概念验证任务来启用依赖注入,这允许我们在验证期间使用我们的 NHibernate 会话来查询数据库,并使用控制器和视图模型使用的相同会话而不是 FluentValidation 的“单例”模式与 MVC 5 一起使用。
当使用[Validator(typeof(T))]视图模型上面的属性时,消息按字段显示就好了,但是验证器实例在 AppDomain 中是单例的,并且验证器使用的 NHibernate 会话与控制器使用的不同。这会导致数据在数据验证期间变得不同步。检查数据库的验证开始返回意外结果,因为 NHibernate 在服务器上缓存了如此多的数据,并且它实际上有 2 个单独的缓存。
public class PersonForm
{
public PhoneFieldsCollection Phones { get; set; }
}
public class PhoneFieldsCollection
{
public Dictionary<string, PhoneNumberFields> Items { get; set; }
}
public class PhoneNumberFields
{
[Display(Name="Country Code")]
[DataType(DataType.PhoneNumber)]
public string …Run Code Online (Sandbox Code Playgroud) c# ×4
specflow ×4
bdd ×2
mstest ×2
asp.net ×1
asp.net-mvc ×1
code-behind ×1
cucumber ×1
customtool ×1
gherkin ×1
html ×1
iis ×1
javascript ×1
jenkins ×1
nuget ×1
pageobjects ×1
php ×1
powershell ×1
razor ×1
selenium ×1
session ×1
validation ×1
webforms ×1
windows ×1
windows-10 ×1