有没有办法将视图模型属性作为html端具有不同名称和id值的元素进行反射.
这是我想要实现的主要问题.所以问题的基本介绍如下:
1-我有一个视图模型(作为示例),它为视图侧的过滤操作创建.
public class FilterViewModel
{
public string FilterParameter { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
2-我有一个控制器动作,它是为GETting表格值创建的(这里是过滤器)
public ActionResult Index(FilterViewModel filter)
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
3-我认为用户可以过滤某些数据,并通过表单提交通过查询字符串发送参数.
@using (Html.BeginForm("Index", "Demo", FormMethod.Get))
{
@Html.LabelFor(model => model.FilterParameter)
@Html.EditorFor(model => model.FilterParameter)
<input type="submit" value="Do Filter" />
}
Run Code Online (Sandbox Code Playgroud)
4-我想在渲染视图输出中看到的是
<form action="/Demo" method="get">
<label for="fp">FilterParameter</label>
<input id="fp" name="fp" type="text" />
<input type="submit" value="Do Filter" />
</form>
Run Code Online (Sandbox Code Playgroud)
5-作为解决方案,我想修改我的视图模型,如下所示:
public class FilterViewModel
{
[BindParameter("fp")]
[BindParameter("filter")] // this one extra alias
[BindParameter("param")] //this one extra alias
public string FilterParameter { …Run Code Online (Sandbox Code Playgroud) asp.net-mvc model-binding data-annotations razor asp.net-mvc-5
我一直在搜索互联网,试图找到一种方法来容纳我的表单元素中的破折号,以及MVC 2,3或甚至4中ASP.NET控件的默认模型绑定行为.
作为前端开发人员,我更喜欢使用CSS中的破折号而不是camelCase或下划线.在我的标记中,我希望能够做到的是这样的:
<input type="text" name="first-name" class="required" />
<input type="text" name="last-name" class="required" />
Run Code Online (Sandbox Code Playgroud)
在控制器中,我将传入一个C#对象,如下所示:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
//etc...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法Controller通过一些正则表达式或其他行为来扩展类以适应这种情况?我讨厌我必须做这样的事情:
<input type="text" name="person.firstname" class="required" />
Run Code Online (Sandbox Code Playgroud)
甚至这个:
<input type="text" name="isPersonAttending" class="required" />
Run Code Online (Sandbox Code Playgroud)
思考?
好吧,假设我有一个像这样的URL,它通过HTTP动词映射GET到我在下面的控制器操作:
GET /foo/bar?sort=asc&r=true
Run Code Online (Sandbox Code Playgroud)
如何Bar在我的控制器操作上将其绑定到我的模型,我在下面:
class Bar {
string SortOrder { get; set; }
bool Random { get; set; }
}
public ActionResult FooBar(Bar bar) {
// Do something with bar
return null;
}
Run Code Online (Sandbox Code Playgroud)
请注意,属性名称不会也不一定与URL参数的名称匹配.此外,这些是可选的url参数.
我在我的视图模型中寻找一种方法来缩短搜索表单的查询字符串中的属性名称.例如,详细属性名称可能是查询,但您在查询字符串中看到q.
目前,我正在做以下事情来实现这一目标.
public string Query { get; set; }
public string q
{
get
{
return Query;
}
set
{
Query = value;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为如果有数据注释来帮助解决这个问题可能会更容易.
[Querystring(Name="q")]
public string Query { get; set; }
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,我没有想到或者是否有可能像我那样编写自己的数据注释?
我想在我的.Net Web API应用程序中实现Mailgun的webhooks,但是它们发布的某些参数中带有破折号。我该如何解决?
他们发布的内容示例:
client-type=browser&city=San+Francisco&domain=telzio.com&device-type=desktop&my_var_1=Mailgun+Variable+%231&country=US®ion=CA&client-name=Chrome&user-agent=Mozilla%2F5.0+%28X11%3B+Linux+x86_64%29+AppleWebKit%2F537.31+%28KHTML%2C+like+Gecko%29+Chrome%2F26.0.1410.43+Safari%2F537.31&client-os=Linux&my-var-2=awesome&ip=50.56.129.169&recipient=alice%40example.com&event=opened×tamp=1405017113&token=6khi46bvupa1358v0b3iy29kwumpbajb3ioz4illb6v9bbqkp6&signature=88f46b9ba63ff475bbb3ab193696cf45bf2f25e7e62b44f1e492ff4e085730dd
Run Code Online (Sandbox Code Playgroud)
我的模特:
public class MailgunModel
{
public string City { get; set; }
public string Domain { get; set; }
public string Country { get; set; }
public string Region { get; set; }
public string Ip { get; set; }
public string Recipient { get; set; }
public string Event { get; set; }
public long Timestamp { get; set; }
public string Token { get; set; }
public string Signature { get; set; } …Run Code Online (Sandbox Code Playgroud)