有时用户输入并非严格无效,但可能会被视为有问题.
例如:
Name字段中输入长句子.他可能应该使用该Description字段.Name内容与现有实体非常相似.也许他正在输入相同的实体,但没有意识到它已经存在,或者某些并发用户刚刚输入它.其中一些可以在客户端轻松检查,一些需要服务器端检查.
在这种情况下DataAnnotations,为验证用户提供警告的最佳方法是什么?这里的关键是用户必须能够覆盖警告并仍然提交表单(或重新提交表单,具体取决于实现).
想到的最可行的解决方案是创建一些类似于a的属性,CustomValidationAttribute它可以进行AJAX调用并显示一些警告文本,但不会影响ModelState.预期用途是:
[WarningOnFieldLength(MaxLength = 150)]
[WarningOnPossibleDuplicate()]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.EditorFor(model => model.Name)
@Html.WarningMessageFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
Run Code Online (Sandbox Code Playgroud)
那么,有什么想法吗?
贪心最佳优先搜索算法是否与最佳优先搜索算法不同?
该wiki页面大约有贪婪的BFS一个单独的段落,但它是一个有点不清楚.
我的理解是,Greedy BFS只是BFS,其中维基百科算法中的"OPEN最佳节点"是一个为节点计算的启发式函数.所以实现这个:
OPEN = [initial state]
CLOSED = []
while OPEN is not empty
do
1. Remove the best node from OPEN, call it n, add it to CLOSED.
2. If n is the goal state, backtrace path to n (through recorded parents) and return path.
3. Create n's successors.
4. For each successor do:
a. If it is not in CLOSED: evaluate it, add it to OPEN, and record its parent.
b. Otherwise: change …Run Code Online (Sandbox Code Playgroud) 我正在尝试从WSDL创建一个新的服务引用,我希望所有的属性都是DateTime而不是string.
例如,联系人的xsd定义:
<s:complexType name="Contact">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Address" type="tns:Address" />
<s:element minOccurs="0" maxOccurs="1" name="Email" type="s:string" />
...
<s:element minOccurs="1" maxOccurs="1" name="BirthDate" type="s:date" />
</s:sequence>
Run Code Online (Sandbox Code Playgroud)
BirthDate的类型是s:date,但生成的类型(在Reference.cs中)是一个字符串.
internal partial class Contact : object, IExtensibleDataObject, INotifyPropertyChanged
{
[OptionalField]
private MembershipMgmtMediator.Address AddressField;
[OptionalField]
private string EmailField;
private string BirthDateField;
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个Web项目并将其添加为Web引用而不是服务引用,它将正确成为DateTime.我认为这与wsdl.exe和svcutil.exe在幕后工作的方式有关,但无论如何,我都在试图弄清楚如何正确地让Visual Studio认识到这个属性应该是一个DateTime.
有没有人完全引用我可以在MVC 3附带的T4模板ControllerWithContext.tt中使用的Host对象的成员?
我已经尝试了我能想到的每一个谷歌搜索,但唯一相关的结果是这个页面:http: //blogs.msdn.com/b/webdevtools/archive/2009/01/29/t4-templates-a-quick -启动引导换ASP净MVC-developers.aspx
但它只显示4个属性(ItemName,NameSpace,ExtraActionMethods,ControllerRootName)而不是完整列表.在模板中有像RelatedProperties,EntitySetName,ModelType和ContextType之类的东西.
我正在尝试查找完整的属性列表,其类型和说明.任何帮助将不胜感激.
我有一个 C++/CLI DLL,它使用一些托管代码(用 C# 编写)。我想从 DLL 中导出一个纯 C 函数 - 它将使用LoadLibrary和从非托管代码调用GetProcAddress。
在导出的函数中,我只需要创建一个实例并调用 C# 类的一个方法。所以我试过这个:
extern "C" __declspec( dllexport ) int __stdcall DoWork(
const wchar_t* Param1,
int Param2,
void* Param3)
{
WorkerNamespace::ManagedClass1 worker;
return worker.DoWork( gcnew String(Param1), Param2, IntPtr( Param3 ) );
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但是当我执行 a 时dumpbin CompiledDll.dll /exports,没有导出函数。
我尝试#pragma unmanaged在函数声明之前添加,但随后在主体内使用托管类型时出现错误。
如果我用一个空存根(只是return 1;)和用替换函数的主体#pragma unmanaged,该函数仍然没有出现在dumpbin. 那么我做错了什么?如何从 C++/CLI 类库项目中导出 C 函数?
在我的用户表单中,我想使用html.Labelfor帮助程序,但我想要类别名称而不是CatName的Model属性名称.我知道我可以把它放在一个,但我必须一遍又一遍地重复使用这些名称.以下是示例.
型号属性:
public string CatName { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.LabelFor(model => model.CatName) //Displays CatName , I want Category Name
Run Code Online (Sandbox Code Playgroud) 我的视图模型具有一个[必需]不可为空的int属性,该属性由DropDownListFor选择。如果要选择的列表为空,则ModelState.IsValid为true。
我的模型具有Required int属性:
public class MyModel
{
[Required]
public int PickedValue { get; set;}
IEnumerable<SelectListItem> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在“创建”视图中,渲染一个<select>元素:
@Html.DropDownListFor(model => model.PickedValue, model.Items)
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,如果model.Items列表为空(没有可供选择的元素),ModelState.IsValid则为true:
[HttpPost]
public ActionResult Create( MyModel model )
{
if( ModelState.IsValid )
{
// true, and ModelState.Keys doesn't contain PickedValue because it was never POSTed.
}
//...
}
Run Code Online (Sandbox Code Playgroud)
现在,如果出现以下情况,问题就消失了:
PickedValue是Nullable(int?),或<select>- @Html.DropDownListFor(model => model.PickedValue, model.Items, "")中有一个空项目,或者是否有一种方法可以强制ModelState.IsValid执行 …
似乎我的<span>标签在我的内部导致新的换行符<td>.你通常怎么解决这个问题?
<tr>
<td> date</td> <!--date-->
<td> <span class="icon1"> <img here> </span> | <span class="icon2"> <img here> </span> </td> <!--action-->
</tr>
Run Code Online (Sandbox Code Playgroud)

[update = added css]
.icon1{
width:22px;
height:22px;
background-color:#eb2960;
display:block;
border-radius:4px;
cursor: pointer; cursor: hand;
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×3
.net ×1
algorithm ×1
alias ×1
asp.net ×1
c ×1
c# ×1
c++-cli ×1
css ×1
date ×1
html ×1
interop ×1
javascript ×1
model ×1
scaffolding ×1
search ×1
svcutil.exe ×1
t4 ×1
validation ×1
view ×1
wsdl ×1
xsd ×1