我似乎无法弄清楚如何使用Ajax从jquery ui按钮函数提交表单.
这是我的脚本,通过传统方式提交表单
$('#contact-form').dialog({
modal: true,
autoOpen: false,
buttons: {
Cancel: function () {
$(this).dialog('close');
},
Ok: function () {
$('form#contactUs').submit();
$(this).dialog('destroy');
}
}
});
$('#contact-us').click(function () {
$('#contact-form').dialog('open');
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
这是我的表格
<div id="contact-form" class="hidden" title="Online Request Form">
<form action="/Main/Contact/contactUs" method="post">
<div>
<label for="Name">Name</label><br />
<input name="Name" /><br />
<label for="PhoneNumber">Phone Number</label><br />
<input name="PhoneNumber" /><br />
<label for="EmailAddress">Email Address</label><br />
<input name="EmailAddress" /><br />
<label for="Question">Question or Comment</label><br />
<textarea name="Question"></textarea><br />
<label for="Security">What color is an …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我的模型结构用DataAnnotations修饰.这有助于我的验证完美,但是我不确定如何在没有双重输入的情况下将这些DataAnnotations保留到我的ViewModel.
基本上我很懒,我试图尽可能保持干燥.
class User
{
[Required]
public string FirstName {get; set; }
[Required]
public string LastName {get; set; }
public datetime RegistrationDate {get; }
}
class CreateUserViewModel
{
public string FirstName {get; set; }
public string LastName {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第一个类永远不会被View使用,但它包含应用程序所需的所有DataAnnotations.第二个类总是由CreateUser View使用,但我不想重新应用DataAnnotations.这可能吗?如果是这样,怎么样?
我不知道这是否是接近某事的正确方法,但我希望它是.下面的例子是一个沉重的控制器,绝对是错误的方法,但它让我知道我正在寻找什么.
public class PeopleController : Controller
{
public ActionResult List(string? api)
{
MyViewModel Model = new MyViewModel();
if (api == "json") {
// I'd like to return the Model as JSON
} else if (api == "XML") {
// I'd like to return the Model as XML
} else {
return View(Model);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要做的是将Model返回给View,如果它是这样请求的话
但我希望它输出JSON,如果这样请求它
如果像这样请求输出XML
这是完全错的吗?
如果没有,实现这一目标的最佳方法是什么?
我想用一个Custom MultiPurposeResult来实现它,它可以为我做所有的过滤,然后将其返回
public class PeopleController : Controller
{
public MultiPurposeResult List(string? api)
{
MyViewModel Model = …Run Code Online (Sandbox Code Playgroud) 我正在运行以下powershell命令
$chromePath = "${Env:ProgramFiles(x86)}\Google\Chrome\Application\"
$chromeApp = "chrome.exe"
$chromeCommandArgs = @('--make-default-browser')
Invoke-Expression “cmd.exe /C `"$chromePath$chromeApp`" $chromeCommandArgs”
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我运行它时,我收到以下错误消息.
cmd.exe:[1396:2128:0708/153347:错误:gpu_info_collector_win.cc(98)]无法检索有效的WinSAT评估.在行:1 char:1 + cmd.exe/C"C:\ Program Files(x86)\ Google\Chrome\Application\chrome.exe"--make- ... + ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:([1396:2128:0708 ... SAT assessment.:String] [],RemoteException + FullyQualifiedErrorId:NativeCommandError
[1396:2128:0708/153347:错误:shell_integration_win.cc(200)] Chrome无法设置为默认浏览器.
可能导致此错误的原因是什么?我意识到有各种方法来执行命令,但最重要的是,使用--make-default-browser交换机执行Chrome 是失败的.
有没有办法ssh-keygen在PowerShell中自动化该方法?我正在尝试使用以下代码,但它需要用户输入密码.
# Create your GitHub SSH Key
$MyEmailAddress = "some.user@github.com"
if (! (Test-Path ("~/.ssh/id_rsa_test"))){
ssh-keygen -t rsa -C "$MyEmailAddress" -f "id_rsa_test"
}
Run Code Online (Sandbox Code Playgroud)
我尝试输入密码开关,但后来却抱怨密码为空.
# either
ssh-keygen -t rsa -C "$MyEmailAddress" -f "id_rsa_test" -N ""
# or
ssh-keygen -t rsa -C "$MyEmailAddress" -f "id_rsa_test" -N "$null"
Run Code Online (Sandbox Code Playgroud)
我的密钥中不需要密码.
我们的解决方案有两个不同的数据库提供程序,它们都位于不同的项目中。IDbProvider他们都继承了位于我们核心项目中的共同点。
namespace OurApp.Data
{
public interface IDbProvider
{
// truncated
}
}
Run Code Online (Sandbox Code Playgroud)
namespace OurApp.Data.SqlServer
{
public class DbProvider : IDbProvider {}
}
Run Code Online (Sandbox Code Playgroud)
namespace OurApp.Data.Sqlite
{
public class DbProvider : IDbProvider {}
}
Run Code Online (Sandbox Code Playgroud)
数据库的功能必须相同,并且我们已经针对SqlServer.DbProvider.
目前,所有 RepositoryTest 都继承自基类。
public abstract class RepositoryTestsBase
{
protected IDbConnectionProvider Connection;
protected IDbProvider DbProvider;
[SetUp]
public void Setup()
{
// Need to create a new connection to the server and make sure there is no database
ConnectionStringSettings dbConnection = ConfigurationManager.ConnectionStrings["databaseConnection"];
string testDatabaseName = …Run Code Online (Sandbox Code Playgroud) 我UIStatusBarStyle对我为iOS 7 设置应用程序效果的方式非常不满意.基本上我有一个自定义主持人设置了SlidingPanels导航(汉堡菜单).在定制主持人里面我定义了一个RootController,这就是我困惑/勾掉/烦恼的地方......选择一个. </rant>
通常我想做这样的事情并完成它.
RootController = new UIViewController();
// this line won't work because PreferredStatusBarStyle is a Method Group and not a property WTF
RootController.PreferredStatusBarStyle = UIStatusBarStyle.LightContent;
Run Code Online (Sandbox Code Playgroud)
但似乎没有办法在iOS中干净地设置属性.因此,我坚持这种丑陋.
RootController = new CustomUiViewController();
//.....
public class CustomUiViewController : UIViewController
{
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在ViewDidLoad()每一个观点中,我都要打电话SetNeedsStatusBarAppearanceUpdate(),这对我来说是荒谬的.
是否有更清洁/更简单的方法来设置它?
上述方法的一个副作用是当应用程序首次加载时,StatusBar仍然是"黑暗",因此直到之后才能看到时钟ViewDidLoad().
我需要做些什么才能让TeamCity针对我的项目正确生成覆盖率报告?
我有一个针对我的代码运行DotCover的自定义PowerShell构建脚本.构建脚本有一个像这样的覆盖方法
Function Invoke-NUnitWithCoverage ( [string] $targetAssembly, [string] $outputDir, [string] $runCommand){
$fileName = Get-TestFileName $outputDir $runCommand
$xmlFile = "$fileName-TestResults.xml"
$txtFile = "$fileName-TestResults.txt"
$coverageFile = "$fileName-CoverageResults.xml"
exec{ dotcover.exe analyse /TargetExecutable=$nunitRunnerDir\nunit-console.exe /TargetArguments="$targetAssembly /fixture:$runCommand /xml=$xmlFile /out=$txtFile /nologo /framework=4.0" /Output=$coverageFile /ReportType=xml } "Running code coverage '$runCommand' failed."
Write-Host "##teamcity[importData type='dotNetCoverage' tool='dotcover' path='$coverageFile']"
}
Run Code Online (Sandbox Code Playgroud)
TeamCity上的输出显示正确,但它不生成报告.这是TeamCity日志.如您所见,存在生成故障.
TL; DR;
如果您不想阅读整个日志,请按以下步骤操作.
[JetBrains dotCover] Failed to merge snapshots. Unknown storage type. Unknown storage type
...
[JetBrains dotCover] Unhandled exception: The specified path, file name, or both are too …Run Code Online (Sandbox Code Playgroud) 我有一个接受任何 POCO 的方法.然后该方法需要能够检查POCO是否是a List<Poco>.如果它不是列表,则需要将其转换为列表.
例
MyCustomMethod(object input)
{
// if !input is list
// convert input to list
}
Run Code Online (Sandbox Code Playgroud)
我会这样称呼它
MyCustomMethod(Pocos.foo);
MyCustomMethod(Pocos.bar);
Run Code Online (Sandbox Code Playgroud)
记得MyCustomMethod不知道poco被送到了什么.它所知道的只是检查对象是否是列表,如果不是,则需要将其转换为同一对象的列表.
最简单的方法是什么?
编辑:
对此的一些推理可能会有所帮助.我正在构建一个sencha-touch应用程序,并且Ext.Data.Store要求所有JSON数据都在一个数组中.
我正在使用asp.net-mvc-3构建我的WebService ,我有一个自定义JsonPResult.JsonPResult接受任何对象并将该对象作为JsonP返回.如果我向JsonPResult发送一份清单,一切都很好吃.如果我只是发送一个对象,Sencha Touch就会把这个对象放到一个数组中.
为了保持DRY,我希望JsonPResult检查是否有任何对象是一个列表,然后完成工作,而不是在每个控制器中重复自己.
我正在使用我自己的自定义HtmlHelper来启用选择列表上的AutoComplete支持.
这是正常的,除了我需要能够支持我的ViewModel中的DataAnnotations.
这是我当前(工作)HtmlHelper(没有验证)
<Extension()>
Public Function AutoCompleteDropDownList(ByVal helper As HtmlHelper, name As String, autoCompleteSelectListItem As List(Of AutoCompleteSelectListItem), htmlAttributes As Object) As MvcHtmlString
Dim selectBuilder As New TagBuilder("select")
selectBuilder.MergeAttribute("name", name)
selectBuilder.MergeAttributes(New RouteValueDictionary(htmlAttributes))
selectBuilder.MergeAttribute("autocorrect", "off")
selectBuilder.MergeAttribute("autocomplete", "off")
Dim selectListBuilder As New TagBuilder("option")
selectListBuilder.MergeAttribute("value", "")
selectListBuilder.MergeAttribute("selected", "selected")
Dim innerHtmlBuilder As New StringBuilder
innerHtmlBuilder.Append(selectListBuilder.ToString(TagRenderMode.Normal))
For Each item In autoCompleteSelectListItem
selectListBuilder = New TagBuilder("option")
selectListBuilder.MergeAttribute("value", item.Value)
selectListBuilder.MergeAttribute("data-alternative-spellings", item.AlternativeSpellings)
selectListBuilder.MergeAttribute("data-relevancy-booster", item.RelevancyBooster)
selectListBuilder.InnerHtml = item.Label
innerHtmlBuilder.Append(selectListBuilder.ToString(TagRenderMode.Normal))
Next
selectBuilder.InnerHtml = innerHtmlBuilder.ToString()
Return MvcHtmlString.Create(selectBuilder.ToString(TagRenderMode.Normal))
End Function
Run Code Online (Sandbox Code Playgroud)
如何重写这个以支持验证?就像是 …
asp.net-mvc ×3
c# ×2
powershell ×2
actionresult ×1
ajax ×1
dotcover ×1
git ×1
html-helper ×1
ios ×1
jquery ×1
nunit ×1
poco ×1
reflection ×1
ssh-keygen ×1
teamcity-8.0 ×1
validation ×1
web-services ×1
xamarin ×1
xamarin.ios ×1