嗨说我有一张桌子:
Person:
PersonId
Name
ManagerId
Run Code Online (Sandbox Code Playgroud)
所以ManagerId是一个回复给另一个人的参考.
所以数据库中可能有人:
1
Bob
null
2
Steve
1
3
Tim
2
Run Code Online (Sandbox Code Playgroud)
所以鲍勃是史蒂夫的经理而史蒂夫是蒂姆的经理.
所以我想要做的就是编写一个查询,让Bob管理下的所有人.直接或间接.所以我想要得到史蒂夫和蒂姆.在同一条线上.
如果我写:
select * from Person
where ManagerId = 1 I would get only Steve.
Run Code Online (Sandbox Code Playgroud)
我怎么写它所以我直接或间接地让每个人都在Bob下?
我有一个MVC应用程序,我想显示一个包含数据库信息的下拉列表.
下拉列表将显示来自数据库汽车的信息使用表格Make是汽车的品牌.
所以在我看来,我会有类似的东西:
@model VectorCheck.ViewModels.CarsViewModel
...
@Html.DropDownListFor(modelItem => Model.MakeId, Model.Makes)
...
Run Code Online (Sandbox Code Playgroud)
所以我需要让视图模型得到make的列表.
所以我可能有一些逻辑可以说这只说红色的汽车.
var redCars = _unitOfWork.Cars(x => x.Colour == "Red");
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为这个查询提供逻辑的最佳实践.它应该放在viewModel还是控制器中.
我看到它的方式我有两个选项.
选项1:控制器.
public ActionResult Edit(int id)
{
var car = _unitOfWork.CarRepository.Get(id);
var carMakes = _unitOfWork.CarMakeRepository.Where(x => x.Colour == "Red").Select(u => new SelectListItem { Value = u.CarMakeId.ToString(), Text = u.Name });
return View("Edit", new InsertUpdateCarViewModel(car, carMakes));
}
Run Code Online (Sandbox Code Playgroud)
视图模型
public Car Car { get; set; }
public IEnumerable<SelectListItem> CarMakes { get; set; }
InsertUpdateCarViewModel(Car car, IEnumerable<SelectListItem> carMakes)
{
Car= car; …
Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试为用户和角色之间的多对多关系设置我的实体框架.
下图显示了数据库中的内容:
用户模型是:
public class User : IEntity
{
public virtual int UserId { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string UserName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string FirstName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(100)]
public virtual string LastName { get; set; }
[Column(TypeName = "varchar")]
[StringLength(200)]
public virtual string EmailAddress { get; set; }
public int AreaId { get; set; }
[Column(TypeName = "varchar")]
[StringLength(64)]
public string CreatedByUserName { …
Run Code Online (Sandbox Code Playgroud) 嗨,我正在使用ninject与MVC应用程序.
我确信我已正确设置,因为我能够让它适用于我的控制器.以下是控制器的示例,它正常工作:
public class GstRateController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public GstRateController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
...
Run Code Online (Sandbox Code Playgroud)
然后我认为它在viewModel上也会很好所以我尝试了:
public class SettingController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public SettingController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
Run Code Online (Sandbox Code Playgroud)
然后我通过以下方式在控制器中实例化视图模型:
public ActionResult Index()
{
return View("Index", Activator.CreateInstance<SettingViewModel>());
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
没有为此对象定义的无参数构造函数.
我是DI的新手.有人可以告诉我如何为viewmodels实现这个目标吗?
我一直试图做一个像这样的动作链接:
<li>@Html.ActionLink("Home", "Index", "Invoice", new { id = "homelink" })</li>
Run Code Online (Sandbox Code Playgroud)
所以我拥有的是linkText,一个actionname,一个控制器名称和一个链接的id.
但是没有与之匹配的签名.最近的一个在控制器名称和htmlattributes之间具有路由值.我没有任何路线值,但我需要放在那里.
有人可以告诉我如何最好地解决这个问题吗?
我有一个显示这个的网页:
这背后的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吗?任何人都可以告诉我如何实现这一目标吗?
我有这种方法进行单元测试:
public virtual TEntity Get(int id)
{
return _db.Set<TEntity>().Find(id);
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何进行单元测试吗?
我在想我需要测试的是使用正确的id调用Find?
首先,我试图_db
使用Moq 来模拟上下文.设置不是虚拟的,所以不能使用Verify
.
有人可以建议另一种测试方法吗?
我有一个表,其中包含包含状态的数据列.两个示例状态将是"已拒绝"和"付费"
我想要做的是将"已拒绝"的文本颜色更改为红色,将"已付费"的颜色更改为绿色.
对于具有此状态的单元格,我添加了td
类似的类:
<td class="status">
@Html.DisplayFor(modelItem => item.Status)
</td>
Run Code Online (Sandbox Code Playgroud)
所以我可以轻松识别它.
我发现我可以使用以下方法将所有状态的颜色更改为Red:
$('.status').css("color", "red");
Run Code Online (Sandbox Code Playgroud)
我也可以通过以下方式获得第一个的价值:
alert($('.status').html());
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何根据文本设置状态颜色.即所有"已接收"设置颜色为红色,所有"付费"设置颜色为绿色.
有人可以告诉我如何实现这个目标吗?
我甚至使用jQuery遵循正确的方法还是有更好的CSS方式?
我想用输入参数调用这个存储过程:
proc [dbo].[Invoice_GetHomePageInvoices] (
@FinancialYearStartDate datetime = null
, @FinancialYearEndDate datetime = null
Run Code Online (Sandbox Code Playgroud)
麻烦的是我通常从我的代码调用存储过程的方式是:
return _db.Database.SqlQuery<HomePageInvoice>(string.Format("EXEC Invoice_GetHomePageInvoices @FinancialYearStartDate = '{0}', @FinancialYearEndDate = '{1}'", financialYear.StartDate.ToString(), financialYear.EndDate.ToString()));
Run Code Online (Sandbox Code Playgroud)
所以这不会起作用,因为我基本上将我的日期时间转换为字符串.
我该怎么办呢?
在测试中我需要测试一个对象:
IEnumerable<int> Ids.
Run Code Online (Sandbox Code Playgroud)
该集合包含数字1,2和3.
我基本上想测试一下ID中有三个ID,而且1,2和3都存在.
问题是IEnumerable没有计数.
我以为我能够去:
Assert.AreEqual(3, Ids.Count);
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何做到这一点以及如何确保1,2和3是那里的实际数字?
asp.net-mvc ×4
c# ×2
css ×2
html ×2
unit-testing ×2
.net ×1
actionlink ×1
collections ×1
jquery ×1
linq ×1
mocking ×1
moq ×1
ninject ×1
printing ×1
recursion ×1
sql ×1
t-sql ×1