在我的xaml设计时出现错误:
对象未设置为对象的实例。
它仅在设计时发生,并在运行时完美运行。错误来自我的转换器,下面是我的代码。我认为这可能是由于未检查value是否为null或是否为null而返回的,但是我同时更改了两者,并且没有任何区别。
和想法表示赞赏。谢谢
public class CouponDataSplitterConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
List<SelectionArea> selectionAreasList =
new List<SelectionArea>((ObservableCollection<SelectionArea>) value);
foreach (var area in selectionAreasList)
{
if (area.AreaName.Contains(parameter.ToString()))
{
return area.SelectionRows;
}
}
return selectionAreasList;
}
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
XAML:
ItemsSource="{Binding Coupon.SelectionAreas,
ConverterParameter='Test Parameter',
Converter={StaticResource CouponDataSplitterConverter}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
at App.UI.Converters.CouponDataSplitterConverter.Convert(Object value, Type targetType, …Run Code Online (Sandbox Code Playgroud) 我有一个表(如下所示),其中每个单元格都有一个隐藏的复选框,直到用户将鼠标悬停在该单元格上.如果选中该复选框,则鼠标离开单元格时将保持显示状态,否则复选框将再次隐藏.
我遇到的问题是我不知道如何为用户当前悬停的单个单元格显示复选框.此时,鼠标悬停在任何单元格上将显示每个复选框,如下所示:
我对单元格设置位置的看法:
@for (int i = 0; i < Model.Users.Count(); i++) {
<tr>
@for (int j = 0; j < Model.Users.Count(); j++) {
string background = Model.AssignedArray[i] == j ? "background-color:#157fa0" : null;
string text = Model.AssignedArray[i] == j ? "color:#ffffff" : null;
<td class="tableCell" style="text-align: center; @background; @text">
@Model.Matrix[i, j]
<input type="checkbox" class="hideCheckBox" name="forcedAssigned" value="">
</td>
}
</tr>
Run Code Online (Sandbox Code Playgroud)
用于复选框的JavaScript:
<script>
$('.tableCell')
.mouseenter(function () {
$(".hideCheckBox").show();
})
.mouseleave(function () {
if ($(".hideCheckBox").is(":checked"))
$(".hideCheckBox").show();
else
$(".hideCheckBox").hide();
});
</script>
Run Code Online (Sandbox Code Playgroud)
CSS:
.hideCheckBox …Run Code Online (Sandbox Code Playgroud) 我正在使用 Nunit 来测试我的控制器中从数据库中删除记录的方法。一切正常,当我检查时记录被删除但不知何故
db.AssesorMaxProjectLoad.Find(previousLoad.ID)
Run Code Online (Sandbox Code Playgroud)
仍然返回删除的值并使我的测试失败。
测试:
[Test]
public void AssesorMaxProjectLoadsDeleteLoad()
{
var previousLoad = db.AssesorMaxProjectLoad.Where(t => t.AssesorID == testAssesor3ID).FirstOrDefault(t => t.TaskGroupID == taskGroupID);
var result = controller.DeleteConfirmed(previousLoad.ID) as ViewResultBase;
var newProjectLoad = db.AssesorMaxProjectLoad.Find(previousLoad.ID).MaxAssignedProjectLoad;
Assert.AreEqual(null, newProjectLoad);
}
Run Code Online (Sandbox Code Playgroud)
控制器方法其测试:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
AssesorMaxProjectLoad assesorMaxProjectLoad = db.AssesorMaxProjectLoad.Find(id);
db.AssesorMaxProjectLoad.Remove(assesorMaxProjectLoad);
db.SaveChanges();
return RedirectToAction("Index", "AssesorMaxProjectLoads", new { id = assesorMaxProjectLoad.TaskGroupID });
}
Run Code Online (Sandbox Code Playgroud)
发生了什么或我错过了什么?我不明白当它不再在数据库中时如何返回?
asp.net-mvc ×2
c# ×2
checkbox ×1
converter ×1
css ×1
design-time ×1
html ×1
javascript ×1
nunit ×1
unit-testing ×1
wpf ×1
xaml ×1