我们的ASP.NET MVC应用程序允许经过身份验证的用户管理链接到其帐户的一个或多个"站点".
我们的网址是高度猜测的,因为我们在网址而不是Id中使用网站友好名称,例如:
/sites/mysite/
/sites/mysite/settings
/sites/mysite/blog/posts
/sites/mysite/pages/create
Run Code Online (Sandbox Code Playgroud)
如您所见,我们需要在多个路线中访问站点名称.
我们需要为所有这些操作执行相同的行为:
我们始终可以通过ISiteContext对象使用当前帐户.以下是我如何使用普通路由参数实现上述所有操作并直接在我的操作中执行查询:
private readonly ISiteContext siteContext;
private readonly IRepository<Site> siteRepository;
public SitesController(ISiteContext siteContext, IRepository<Site> siteRepository)
{
this.siteContext = siteContext;
this.siteRepository = siteRepository;
}
[HttpGet]
public ActionResult Details(string id)
{
var site =
siteRepository.Get(
s => s.Account == siteContext.Account && s.SystemName == id
);
if (site == null)
return HttpNotFound();
return Content("Viewing details for site " + site.Name);
}
Run Code Online (Sandbox Code Playgroud)
这不是太糟糕,但我需要在20个左右的动作方法上做这个,所以想尽可能保持干燥.
我没有做过自定义模型粘合剂,所以我想知道这是否是一个更适合他们的工作.一个关键要求是我可以将我的依赖项注入模型绑定器(对于ISiteContext和IRepository - 如果需要,我可以回退到DependencyResolver).
非常感谢,
本
更新 …
我有一个显示这个的网页:

这背后的Html是:
<label>Approved For Payment:</label>
<select id="Invoice_ApprovedForPayment" class="dropdownapprovedforpayment" name="Invoice.ApprovedForPayment" lineid="299" disabled="disabled">
<option value="null" selected="selected">Please Approve</option>
<option value="true">Accepted</option>
<option value="false">On Hold</option>
</select>
Run Code Online (Sandbox Code Playgroud)
目前,当打印此页面时,请批准即将显示.因为它将其打印为选择下拉列表.这是有道理的,但是我希望我可以以某种方式得到它,以便它打印时看起来像是一个正常的标签,跨度等?我在想这可能是使用print.css吗?任何人都可以告诉我如何实现这一目标吗?
我有以下代码 -
视图-
<% Html.BeginForm(); %>
<div>
<%= Html.DropDownList("DropDownSelectList", new SelectList( Model.DropDownSelectList, "Value", "Text"))%>
Run Code Online (Sandbox Code Playgroud)
控制器 -
public ActionResult Admin(string apiKey, string userId)
{
ChallengesAdminViewModel vm = new ChallengesAdminViewModel();
vm.ApiKey = apiKey;
vm.UserId = userId;
vm.DropDownSelectList = new List<SelectListItem>();
vm.DropDownSelectList.Add(listItem1);
vm.DropDownSelectList.Add(listItem2);
vm.DropDownSelectList.Add(listItem3);
vm.DropDownSelectList.Add(listItem4);
vm.DropDownSelectList.Add(listItem5);
vm.DropDownSelectList.Add(listItem6);
vm.DropDownSelectList.Add(listItem7);
}
[HttpPost]
public ActionResult Admin(ChallengesAdminViewModel vm)
{
if (ModelState.IsValid)//Due to the null dropdownlist gives model state invalid
{
}
}
Run Code Online (Sandbox Code Playgroud)
ViewModel-
public class ChallengesAdminViewModel
{
[Required]
public string ApiKey { get; set; }
[Required]
public …Run Code Online (Sandbox Code Playgroud) 是否有任何使左箭头的行为类似于标签按钮(将焦点设置为下一个可聚焦项目),右箭头的行为类似于shift +标签(将焦点设置为上一个可对焦项目)?
我到目前为止:
$().keypress(function(e) {
if (e.keyCode == 37) {
alert('I want to do a shift-tab');
}
else if (e.keyCode == 39) {
alert('I want to do a tab');
}
});
Run Code Online (Sandbox Code Playgroud)
但谷歌并没有那么有用所以我认为我会在这里快速发布一些帖子,而谷歌更多.
谢谢!
哦,这纯粹是为了FF3.0所以我不需要担心其他浏览器的麻烦.
asp.net-mvc ×3
html ×2
css ×1
field ×1
focus ×1
javascript ×1
jquery ×1
modelbinders ×1
printing ×1
setfocus ×1