在我的控制器中捕获到异常后,我想为电子邮件字段设置错误消息:
...
catch (EmailAlreadyExistsException emailAlreadyExistsException)
{
ModelState.AddModelError("Useraccount_Email", "This is an error message");
RegisterViewModel viewModel = new RegisterViewModel
{
Useraccount = useraccount,
InformationMessages = InformationMessageHelper.GetInformationMessages()
};
return PartialView(viewModel);
}
...
Run Code Online (Sandbox Code Playgroud)
现在应该在我的视图中显示错误消息:
@using (Ajax.BeginForm("Register", new AjaxOptions { HttpMethod = "Post", OnSuccess = "registerAjaxSuccess" }))
{
@Html.ValidationSummary(true)
<div class="ym-grid">
<div class="ym-g33 ym-gl">
<div class="ym-gbox">
@Html.LabelFor(model => model.Useraccount.LastName)
</div>
...
<div class="ym-grid">
<div class="ym-g33 ym-gl">
<div class="ym-gbox">
@Html.LabelFor(model => model.Useraccount.Email)
</div>
</div>
<div class="ym-g33 ym-gl">
<div class="ym-gbox">
@Html.EditorFor(model => model.Useraccount.Email, new { required = …Run Code Online (Sandbox Code Playgroud) 我有一个抽象类:
public abstract class MyClass
{
protected abstract bool IsSavable();
protected bool IsExecutable()
{
//New mode or edit mode
if (ViewMode == ViewMode.New || ViewMode == ViewMode.Edit)
{
return IsSavable();
}
//Search mode
if (ViewMode == ViewMode.Search)
{
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我想对这门课进行单元测试.因此,我需要模拟"IsSavable"方法.它应该总是返回"true".
我知道如何用Moq模拟我的抽象类.但是,如何模拟我的抽象受保护方法,使其返回true?
函数IsSavable在我的抽象类中通过具体方法(IsExecuteable)调用.我想测试一下这个方法.我知道大多数人会建议在实现"IsSavable"的类中测试它们.不幸的是,这将是很多类,我想测试我的方法IsExecutable只有一次.
我有以下枚举:
public enum ViewMode
{
[Display(Name = "Neu")]
New,
[Display(Name = "Bearbeiten")]
Edit,
[Display(Name = "Suchen")]
Search
}
Run Code Online (Sandbox Code Playgroud)
我正在使用xaml和数据绑定在窗口中显示枚举:
<Label Content="{Binding CurrentViewModel.ViewMode}" Grid.Column="2" VerticalContentAlignment="Bottom" Height="43" HorizontalContentAlignment="Right"/>
Run Code Online (Sandbox Code Playgroud)
但这不显示显示名称属性。我该怎么办?
在我的viewModel中,可以使用扩展方法来获取显示名称属性:
public static class EnumHelper
{
/// <summary>
/// Gets an attribute on an enum field value
/// </summary>
/// <typeparam name="T">The type of the attribute you want to retrieve</typeparam>
/// <param name="enumVal">The enum value</param>
/// <returns>The attribute of type T that exists on the enum value</returns>
public static T GetAttributeOfType<T>(this Enum enumVal) …Run Code Online (Sandbox Code Playgroud) 我想对以下方法进行单元测试:
void Insert(TEntity entity);
Run Code Online (Sandbox Code Playgroud)
该方法的类已被嘲笑(我正在使用Moq)。
现在,我想做一个基于状态的测试,并告诉Moq是否调用了此方法,必须将一个对象插入到列表中。我怎样才能做到这一点?
useraccountRepository.Setup(r => r.Insert(useraccountBeforeLogin)).???
Run Code Online (Sandbox Code Playgroud)
怎么了 有一个引发事件的引发方法。我可以用这个吗?
将焦点更改为网站的另一个元素(例如,通过按 TAB 到另一个输入字段)不在您的查看区域(例如,您位于页面底部而新元素位于顶部)时,所有浏览器(在 Windows 操作系统上测试过的 Internet Explorer、Firefox、Chrome)似乎滚动到足以使具有新焦点的元素可见。
例子:
Image
Text
Input text
...
Footer
Run Code Online (Sandbox Code Playgroud)
当你在Footer和Image到Input text是不是你的可视区域内,你现在压片,从而进行焦点跳跃到Input text这个领域现在是你,但不可见的Image,也没有Text。
虽然这种行为在大多数情况下可能是合适的,但在我的情况下却不是。为了防止它,我建议聚焦元素垂直居中。如何才能做到这一点?
为了更清楚地说明:
这是整个页面:
我向下滚动到底部,所以只有“这是页脚”可见:
我现在通过按 Tab 键来改变焦点。焦点跳转到文本输入。不幸的是,此文本字段上方的元素不可见:
刚试过JSFiddle中的这段代码(学习JS atm):
var checkArrayForDuplicates = new function(arrayToCheck, content) {
alert(arrayToCheck);
}
var numbers = new Array(1, 2, 3, 4, 5, 5);
checkArrayForDuplicates(numbers, 5);
Run Code Online (Sandbox Code Playgroud)
但是函数内的arrayToCheck(数字)总是未定义的.:(
我有两个清单:
List<MasterData> masterDataList;
List<Job> jobList;
Run Code Online (Sandbox Code Playgroud)
我的课程看起来像这样:
public class Job
{
...
public int MasterDataId { get; set; } //foreign key
}
Run Code Online (Sandbox Code Playgroud)
和:
public class MasterData
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我现在想要遍历我jobList并获得所有具有其中一个MasterDataIdid的工作masterDataList.如何使用LINQ(对象)执行此操作?
在我的 xaml 中,我有一个文本框,它绑定到我的视图模型中的一个属性:
XAML:
<TextBox HorizontalAlignment="Left" Height="30" Margin="10,10,0,0" TextWrapping="Wrap" Text="{Binding City}" VerticalAlignment="Top" Width="191" Grid.Column="1" Grid.Row="6"/>
Run Code Online (Sandbox Code Playgroud)
查看型号:
public class MyViewModel : INotifyPropertyChanged
{
...
public string City
{
get { return _model.Address.City; }
set
{
if (_model.Address.City != value)
{
_model.Address.City = value;
RaisePropertyChanged("City");
}
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
双向数据绑定效果很好,但似乎只有在焦点从城市输入更改为另一个对象时才设置属性值。
我想在按下热键 (ENTER) 时保存我的上下文。当我现在输入一个城市并随后按 ENTER 时,该属性不包含新值。当我输入一个城市时,将焦点更改为另一个对象并按 ENTER,该属性包含正确的值。
如何解决这个问题呢?
我有以下抽象类:
public abstract class ViewModel<TPrimaryModel> : ObservableObject
where TPrimaryModel : TwoNames, new()
{
...
}
Run Code Online (Sandbox Code Playgroud)
在另一个类中,我想声明一个可以将ViewModel保存到的变量:
public class MainViewModel
{
private ViewModel _currentViewModel;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为需要2个参数(因为通用).我不介意将哪个ViewModel保存到_currentViewModel,只要该对象继承自抽象类ViewModel.
这不起作用:
public class MainViewModel
{
#region Members
private ViewModel<TwoNames> _currentViewModel;
#endregion
}
Run Code Online (Sandbox Code Playgroud)
编译错误:
The type 'typename' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'parameter' in the generic type or method 'generic'
Run Code Online (Sandbox Code Playgroud)
这是因为TwoNames是一个抽象类.删除"new()"约束对我来说不是一个解决方案,因为我需要在我的抽象类(ViewModel)中实例化"TwoNames"的新对象.还有其他想法吗?
c# ×5
javascript ×2
moq ×2
unit-testing ×2
wpf ×2
xaml ×2
asp.net-mvc ×1
css ×1
enums ×1
generics ×1
html ×1
jsfiddle ×1
linq ×1
mocking ×1
modelstate ×1
mvvm ×1