小编Ale*_*lex的帖子

如何在ASP.NET MVC中验证期间提供警告?

有时用户输入并非严格无效,但可能会被视为有问题.

例如:

  • 用户在单行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)

那么,有什么想法吗?

javascript c# validation asp.net-mvc

48
推荐指数
1
解决办法
1万
查看次数

贪心最佳优先搜索算法是否与最佳优先搜索算法不同?

贪心最佳优先搜索算法是否与最佳优先搜索算法不同?

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)

algorithm search artificial-intelligence best-first-search

21
推荐指数
3
解决办法
4万
查看次数

为什么类型为s:s的XSD元素在生成服务引用时会成为字符串?

我正在尝试从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.

xsd wsdl date service-reference svcutil.exe

4
推荐指数
1
解决办法
3510
查看次数

具有实体框架的MVC控制器的T4模板 - 主机的成员属性(MvcTextTemplateHost)?

有没有人完全引用我可以在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之类的东西.

我正在尝试查找完整的属性列表,其类型和说明.任何帮助将不胜感激.

asp.net-mvc t4 scaffolding visual-studio asp.net-mvc-3

4
推荐指数
1
解决办法
2253
查看次数

从使用 .NET 代码的 C++/CLI DLL 导出 C 函数

我有一个 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 函数?

.net c interop c++-cli

4
推荐指数
1
解决办法
4804
查看次数

在MVC中,有一种方法可以将模型属性别名显示在html.Labelfor中

在我的用户表单中,我想使用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)

model-view-controller asp.net-mvc alias model view

3
推荐指数
1
解决办法
3010
查看次数

ModelState.IsValid为true,但是POST数据中缺少[Required]属性

我的视图模型具有一个[必需]不可为空的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)

现在,如果出现以下情况,问题就消失了:

  1. PickedValueNullableint?),或
  2. 如果我的<select>- @Html.DropDownListFor(model => model.PickedValue, model.Items, "")中有一个空项目,或者
  3. 如果启用了客户端验证(因为从未触发该操作)。

是否有一种方法可以强制ModelState.IsValid执行 …

asp.net asp.net-mvc-3

2
推荐指数
1
解决办法
1696
查看次数

如何删除HTML中的span标记之间的断行

似乎我的<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)

html css

0
推荐指数
1
解决办法
5551
查看次数