我刚刚向AppHarbor部署了一个asp.net mvc 3 Web应用程序,但它失败了:
C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3932,5):错误MSB3541:文件具有无效值"<<<<<<< HEAD".路径中的非法字符.[d:\ TEMP\q5cmde4m.uk1 \输入\ MyProject的\ MyProject.csproj]
这是在我用Visual Studio 2012打开项目之后发生的(该应用程序是使用VS2010创建的).
visual-studio-2010 asp.net-mvc-3 appharbor visual-studio-2012
在asp.net mvc视图中是否有任何简单(内置)方式来获取内容文件夹中文件的绝对路径?
目前我正在使用
@Url.Content("~/Content/images/logo.png")
Run Code Online (Sandbox Code Playgroud)
但返回的路径并不是绝对的.
我知道有可能为这种情况建立自己的助手,但我想知道是否有更简单的方法......
我想测试以下代码行:
...
Bitmap uploadedPicture = Bitmap.FromStream(model.Picture.InputStream) as Bitmap;
...
Run Code Online (Sandbox Code Playgroud)
Picture是我的模型类型HttpPostedFileBase中的属性.所以我想模拟一个HttpPostedFileBase属性进行单元测试:
model.Picture = new Mock<HttpPostedFileBase>().Object;
Run Code Online (Sandbox Code Playgroud)
没问题.
现在我必须模拟InputStream,否则它是null:
model.Picture.InputStream = new Mock<Stream>().Object;
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为InputStream是只读的(没有setter方法):
public virtual Stream InputStream { get; }
Run Code Online (Sandbox Code Playgroud)
是否有一个良好而干净的方法来处理这个问题?一种解决方案是在我的单元测试的派生类中重写HttpPostedFileBase.还有其他想法吗?
我的控制器:
[HttpPost]
public ActionResult AddUsers(int projectId, int[] useraccountIds)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想通过AJAX将参数发布到控制器.传递int projectId
不是问题,但我无法设法发布int[]
.
我的JavaScript代码:
function sendForm(projectId, target) {
$.ajax({
traditional: true,
url: target,
type: "POST",
data: { projectId: projectId, useraccountIds: new Array(1, 2, 3) },
success: ajaxOnSuccess,
error: function (jqXHR, exception) {
alert('Error message.');
}
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用测试阵列,但没有成功.:(我也尝试过设置traditional: true
,contentType: 'application/json; charset=utf-8'
但也没有成功......
该int[] useraccountIds
贴到我的控制器总是空.
我的控制器中有以下代码:
public class MyController : BaseController
{
public ActionResult MyMethod()
{
...
return RedirectToAction("Index", "Dashboard");
}
}
Run Code Online (Sandbox Code Playgroud)
我想对这个重定向(RedirectToRouteResult)进行单元测试.我这样做了:
Assert.IsTrue(result.RouteValues.ContainsKey("action"));
Assert.IsTrue(result.RouteValues.ContainsKey("controller"));
Assert.AreEqual("Index", result.RouteValues["action"].ToString());
Assert.AreEqual("Dashboard", result.RouteValues["controller"].ToString());
Run Code Online (Sandbox Code Playgroud)
所以我需要四个断言来测试我的RedirectToRouteResult.有没有更有效的方法?
asp.net-mvc unit-testing redirecttoaction redirecttoroute asp.net-mvc-3
我有以下索引视图:
@model BoringStore.ViewModels.ProductIndexViewModel
@{
ViewBag.Title = "Index";
}
<h2>Produkte</h2>
<div id='addProduct'>
@{ Html.RenderPartial("Create", new BoringStore.Models.Product()); }
</div>
<div id='productList'>
@{ Html.RenderPartial("ProductListControl", Model.Products); }
</div>
Run Code Online (Sandbox Code Playgroud)
"productList"只是所有产品的列表.
addProduct呈现我的创建视图:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="dialog-confirm" title="Produkt hinzufügen" style="display:none">
@using (Ajax.BeginForm("Index_AddItem", new AjaxOptions { UpdateTargetId = "productList" }))
{
@Html.Raw(DateTime.Now.ToString());
<div>
@Html.LabelFor(model => model.Name)
@Html.EditorFor(model => model.Name)
</div>
<br />
<div>
@Html.LabelFor(model => model.Price)
@Html.EditorFor(model => model.Price)
</div>
<br /><br />
<div>
<input type="submit" value="Produkt hinzufügen" />
</div>
}
Run Code Online (Sandbox Code Playgroud)
提交表单时,将调用控制器中的Index_AddItem方法.不幸的是,表单总是调用该方法两次.:(
有人可以帮我吗?
asp.net-ajax partial-views razor asp.net-mvc-3 double-submit-problem
我已经看到了所有HTTP状态代码的列表.但对我来说,似乎没有"电子邮件未验证"(用于身份验证/授权)的代码.你曾经遇到过同样的"问题"吗?您使用了什么HTTP状态代码?
我想它应该是一个以4开头的代码,因为它是一个"客户端错误".
我有以下型号:
public class RegisterUseraccount
{
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "E-Mail-Adresse")]
public string Email { get; set; }
[Required]
[Display(Name = "Vorname")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Nachname")]
public string LastName { get; set; }
[Required]
[DataType(DataType.Password)]
[MinLength(5)]
[Display(Name = "Passwort")]
public string Password { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
以下观点:
@using (Html.BeginForm("Register", "Useraccount", FormMethod.Post, new { id = "registerUseraccountForm", @class = "ym-form" }))
{
@Html.ValidationSummary(true)
<div class="ym-grid">
<div class="ym-g50 ym-gl">
<div class="ym-fbox-text">
@Html.LabelForRequired(model => model.RegisterUseraccount.FirstName, …
Run Code Online (Sandbox Code Playgroud) 我想用CURL测试我的node.js + express + passport.js测试应用程序(RESTful).我的代码:
var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
// Define the strategy to be used by PassportJS
passport.use(new LocalStrategy(
function(username, password, done) {
if (username === "admin" && password === "admin") // stupid example
return done(null, {name: "admin"});
return done(null, false, { message: 'Incorrect username.' });
}
));
// Serialized and deserialized methods when got from session
passport.serializeUser(function(user, done) …
Run Code Online (Sandbox Code Playgroud) 我得到以下JSON:
[
{
"user_id": "someValue"
}
]
Run Code Online (Sandbox Code Playgroud)
它保存在String中.
我想将它转换为JSONObject
失败的(因为构造函数假设一个JSON开始{
).由于这似乎不可能,我想将其转换为JSONArray
.我怎么能用SimpleJson做到这一点?
asp.net-mvc ×5
jquery ×2
unit-testing ×2
ajax ×1
appharbor ×1
asp.net-ajax ×1
curl ×1
express ×1
git-bash ×1
http ×1
java ×1
javascript ×1
jettison ×1
json ×1
moq ×1
node.js ×1
passport.js ×1
razor ×1