我正在使用asp.net mvc 4 webapi beta来构建休息服务.我需要能够从客户端应用程序接受POSTed图像/文件.这可能使用webapi吗?以下是我目前使用的操作方式.有谁知道这应该如何工作的一个例子?
[HttpPost]
public string ProfileImagePost(HttpPostedFile profileImage)
{
string[] extensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
if (!extensions.Any(x => x.Equals(Path.GetExtension(profileImage.FileName.ToLower()), StringComparison.OrdinalIgnoreCase)))
{
throw new HttpResponseException("Invalid file type.", HttpStatusCode.BadRequest);
}
// Other code goes here
return "/path/to/image.png";
}
Run Code Online (Sandbox Code Playgroud) 我得到一个json数据流,其中包含一个名为"type"的字段.此类型字段描述了需要在运行时创建的对象类型.看起来我无法使用JsonTextReader两次,我找不到将文本阅读器重置为开头.
using (var streamReader = new StreamReader(stream, Encoding))
using (var jsonTextReader = new JsonTextReader(streamReader))
{
JToken token = JObject.Load(jsonTextReader);
var type = (string) token.SelectToken("type");
var modelType = Type.GetType("Project." + type + ", Project");
// Fails here
var obj = serializer.Deserialize(jsonTextReader, modelType);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息.反序列化对象时出现意外的标记:EndObject.
我正在使用AspNet Core 1.0 RTM的结构图.它们似乎已使用属性上的FromServices属性删除.这打破了下面的代码,因为我现在无法注入ClaimsPrincipal.我不知道如何让DI系统获得这个属性.我是否需要创建自定义InputFormatter或其他内容.重新开始工作似乎需要付出很多努力.
Startup.cs
public class Startup {
public IServiceProvider ConfigureServices(IServiceCollection services) {
var container = new Container();
container.Configure(i => {
i.For<IHttpContextAccessor>()
.Use(new HttpContextAccessor());
i.For<ClaimsPrincipal>()
.Use(x => x.GetInstance<IHttpContextAccessor>().HttpContext.User);
});
container.Populate(services);
return container.GetInstance<IServiceProvider>();
}
}
Run Code Online (Sandbox Code Playgroud)
Model.cs
public class Model {
//[FromServices] <-- worked in RC1
public ClaimsPrincipal Principal { get; set; }
public string Value => Principal.Identity.Name;
}
Run Code Online (Sandbox Code Playgroud)
TestController.cs
public class TestController : Controller {
public IActionResult Test(Model model){
return Ok();
}
}
Run Code Online (Sandbox Code Playgroud) 我有以下图像元素,它的src不存在.我想使用jquery错误函数来检测它是否已加载,并将src替换为我知道存在的通用映像.这适用于chrome和firefox但在IE中.为什么这在IE中不起作用,是否有任何变通方法?谢谢!
<img id="main" src="missing-image.jpg" />
<script type="text/javascript">
$(function () {
$("#main").error(function () {
$("#main").attr("src", "generic.jpg");
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我目前将所有不同的枚举值类型映射到一个小写的字符串值。我有多个地图,其中包含重复的逻辑。是否可以采用以下 AutoMapper 代码并告诉它始终将枚举转换为小写字符串值?
Mapper.CreateMap<Class1, OutClass1>()
.ForMember(dest => dest.Enum1String, opt => opt.MapFrom(src => src.Enum1.ToString().ToLower()))
.ForMember(dest => dest.Enum2String, opt => opt.MapFrom(src => src.Enum2.ToString().ToLower()));
Mapper.CreateMap<Class2, OutClass2>()
.ForMember(dest => dest.Enum2String, opt => opt.MapFrom(src => src.Enum2.ToString().ToLower()));
Run Code Online (Sandbox Code Playgroud) 使用Xamarin Forms,如何更改默认选择器视图以在PopoverController中显示?下面的代码抛出"弹出窗口无法从没有窗口的视图中呈现".在iOS上.
public class BindablePickerRenderer : PickerRenderer {
private UIPickerView picker;
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) {
base.OnElementChanged(e);
this.picker = new UIPickerView() {
Source = (UIPickerViewModel) new PickerSource(e.NewElement)
};
var popoverContent = new UIViewController();
popoverContent.View = picker;
var popoverController = new UIPopoverController(popoverContent);
popoverController.PopoverContentSize = new SizeF(320, 180);
popoverController.PresentFromRect(picker.Frame, this.Control.InputView, UIPopoverArrowDirection.Up, true);
}
}
Run Code Online (Sandbox Code Playgroud) 我需要能够在运行时使用OR语句构建查询.如果我使用下面的方法来构建查询,那么一切都是AND.我真的需要每个过滤器值为OR才能使此查询正常工作.
public class IdAndRole
{
public string Id {get;set;}
public string Role {get;set;}
}
var idAndRoles = session.Query<IdAndRole, Roles_ById>();
foreach(var filter in filterValues)
{
idAndRoles = idAndRoles.Where(x => x.In(filter.Id) && x.In(filter.Role));
}
Run Code Online (Sandbox Code Playgroud)
伪代码:
(filter[0].Id == value1 && filter[0].Role == role1) ||(filter[1].Id == value2 && filter[1].Role == role2)
Run Code Online (Sandbox Code Playgroud) 我的用户可以在组合框中输入一些文本,但我希望这个文本自动以大写字母显示(就好像用户有大写字母一样).任何想法如何做到这一点?
c# ×6
asp.net-core ×1
automapper ×1
combobox ×1
forms ×1
javascript ×1
jquery ×1
json ×1
json.net ×1
linq ×1
ravendb ×1
xamarin ×1
xamarin.ios ×1