有人可以告诉我一个Cocoa Obj-C对象的例子,带有自定义通知,如何触发它,订阅它并处理它?
在指定asp-controller
和asp-action
链接时,传递id属性的语法是什么?
例如,如果我想链接到给定对象的编辑URL,则所需的URL将是/user/edit/5
例如.
有没有一种方法可以使用TagHelper实现这一目标,还是我们仍然需要回归@Html.ActionLink()
?
我将JSON发布到WebAPI控制器,但模型上的属性没有绑定.
public void Post([FromBody] Models.Users.User model) {
throw new Exception(model.Id.ToString());
}
Run Code Online (Sandbox Code Playgroud)
原始请求如下:
POST http://diva2.local/siteapi/User HTTP/: diva2.local
Connection: keep-alive
Content-Length:: application/json, text/plain, */*
Origin: http://diva2.local
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.: application/json;charset=UTF: http://diva2.local/Users
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=: ISO-8859-1,utf-8;q=0.7,*;q=: .ASPXAUTH=4; __RequestVerificationToken=Rp_hUysjwCjmsxw2
{"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}
Run Code Online (Sandbox Code Playgroud)
我能找到的每个例子都告诉我这应该有用,但是model.Id == null
.
但是,如果我将JSON更改为:
{User: {"Id":3,"FirstName":"DIVA2","LastName":"User1","Username":"diva1","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}}
Run Code Online (Sandbox Code Playgroud)
一切都正确绑定.
这似乎不正确.我想我可以接受JObject
作为参数,并手动绑定它,但感觉就像上面应该Just Work(tm)?
更新:
我已经改变了返回模型的方法,但仍然收到null.
public Models.Users.User Post(Models.Users.User user) {
return user;
}
Run Code Online (Sandbox Code Playgroud)
并回应:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; …
Run Code Online (Sandbox Code Playgroud) 有没有办法告诉使用C#文件是真实的还是符号链接?
我已经通过MSDN W32文档(http://msdn.microsoft.com/en-us/library/aa364232(VS.85).aspx)进行了挖掘,并且找不到任何可用于检查的内容.我从这里使用CreateSymbolicLink,它工作正常.
我正在使用Angular $资源将模型发布到webapi端点,但Angular会在请求有效负载中发送数据,而不是JSON正文或表单参数.结果,模型总是以null结尾.
我的API如下:
public class UserController : APIController {
[HttpPost]
public void Disconnect(Models.Users.User model) {
}
}
Run Code Online (Sandbox Code Playgroud)
请求标头是:
POST /siteapi/User/Disconnect HTTP/1.1
Host: rouge2
Connection: keep-alive
Content-Length: 125
Accept: application/json, text/plain, */*
Origin: http://rouge2
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Content-Type: application/json;charset=UTF-8
Referer: http://rouge2/Users
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: .ASPXAUTH=115C6015BDD5C1A9D111B0A9FBF05294B73287328566F65CB1BCB457DF206EF0916D4615B5914EB443AA567E860742AC14EAA2951B9C327260C4F00649694260A1B3960771FB6675FEE8F3E68B0BB46436020ACAB33ECE0D3E70B50D6569E52B27F69161762C10C19A806A12D3254DF60EF4758DEDCA529A91CB36C74B7FA7F4; __RequestVerificationToken=Rp4Vu8R67ziDNc36DoOLZH7KmEfumig1zFDmYiFWHTsWyf2I037xJQydcmLtOfaJ3ccc8GEZXmHoa8LBRusxKFRYVoy27GuFEfNhKKYS_hUysjwCjmsxw5OCK3RKsiXIAh1Gbi0PxcdqBfzctSJn9g2
Run Code Online (Sandbox Code Playgroud)
并且请求有效负载:
{"Id":3,"FirstName":"Test","LastName":"User","Username":"testuser","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}
Run Code Online (Sandbox Code Playgroud)
如果我在Fiddler中测试,在正文中发布相同的JSON字符串,则正确填充模型,如预期的那样.
是否有内置的模型绑定器可以在这种情况下工作,或者在我可以使用的某个地方预先构建的东西?
或者有人可以指点我的工作方式的方向?
我试过了:
- (NSString*) generateString
{
NSString* stringToReturn = @"thisString";
return stringToReturn;
}
- (void) otherMethod
{
NSString *returnedString = [self generateString];
if (returnedString == @"thisString")
{ // Do this }
else if (returnedString == @"thatString")
{ // Do that }
}
Run Code Online (Sandbox Code Playgroud)
哪个从不匹配.
我试过了
if ([returnedString compare:@"thisString"] == 1)
Run Code Online (Sandbox Code Playgroud)
但是compare方法总是为我返回1,即使与不同的字符串进行比较也是如此.
这样做的正确方法是什么,我应该得到什么结果?
编辑:我已经重新编写了一个示例,因为代码按预期工作.
我正在尝试复制文件,获取MD5哈希,然后删除副本.我这样做是为了避免原始文件上的进程锁定,这是另一个应用程序写入的.但是,我正在锁定我复制的文件.
File.Copy(pathSrc, pathDest, true);
String md5Result;
StringBuilder sb = new StringBuilder();
MD5 md5Hasher = MD5.Create();
using (FileStream fs = File.OpenRead(pathDest))
{
foreach(Byte b in md5Hasher.ComputeHash(fs))
sb.Append(b.ToString("x2").ToLower());
}
md5Result = sb.ToString();
File.Delete(pathDest);
Run Code Online (Sandbox Code Playgroud)
然后我得到一个'进程无法访问文件'的例外File.Delete()
'.
我希望通过using
声明,文件流可以很好地关闭.我还尝试单独声明文件流,删除using
,放置fs.Close()
和fs.Dispose()
读取后.
在此之后,我注释掉了实际的md5计算,并且代码被删除了,文件被删除了,所以看起来它与之有关ComputeHash(fs)
.
有没有一种方法在Visual Studio中右键单击一个接口和'从接口生成类',所以我最终得到一个空类,其中包含接口所需的所有属性和方法?
有点像提取界面,但倒退.
我[EmailAddress]
在模型属性上有一个来自.net 4.5 的 DataAnnotation,它返回一个' 电子邮件字段不是有效的电子邮件地址.'验证时,Email属性为空时出错.
虽然这在技术上是正确的,但我希望这个空值只能用[Required]
注释捕获.
是否有任何我想要的参数可以传递给[EmailAddress]
注释以允许空字符串验证,或者我是否必须回退到使用自定义验证器正则表达式?
c# ×3
cocoa ×2
objective-c ×2
.net ×1
angularjs ×1
asp.net-core ×1
compare ×1
hash ×1
md5 ×1
nsstring ×1
php ×1
symlink ×1
tag-helpers ×1