小编Gle*_*rde的帖子

如何在 Typescript 中键入以防止返回值

如何防止用户从 Typescript 中的函数返回任何内容?

正如您在此示例中所看到的,这些类型都不够:

type VoidReturner = () => void;
type UndefReturner = () => undefined;
type NeverReturner = () => never;
Run Code Online (Sandbox Code Playgroud)
  • void只告诉用户返回值不重要(忽略类型?)
  • undefined要求开发者明确返回undefined
  • never是一个猜测,并且void(如示例 1 返回{})与它不匹配。

typescript typescript-typings

9
推荐指数
2
解决办法
4657
查看次数

LabelFor和TextBoxFor不生成相同的id

使用以下代码时,字段的id和标签的for属性中的id不相同.

<%: Html.LabelFor(x => x.Localizations["en"]) %>   => Localizations[en]
<%: Html.TextBoxFor(x=> x.Localizations["en"]) %>  => Localizations_en_

<%: Html.LabelFor(x => x.Localizations["en"].Property) %>
       => Localizations[en]_Property
<%: Html.TextBoxFor(x=> x.Localizations["en"].Property) %>
       => Localizations_en__Property
Run Code Online (Sandbox Code Playgroud)

我在反射器中跟踪代码,发现生成值的方式不同.不使用相同的帮助方法.

LabelFor用途HtmlHelper.GenerateIdFromName和TextBoxFor用途TagBuilder#GenerateId.

有没有人知道这个的原因,或解决方法(除了编写你自己的整套输入/ textarea /选择助手)?或者这是一个错误?

更新:

因为我总是使用标签文本的第二个参数为标签使用html帮助器,我修改它以使用与表单字段助手相同的id生成代码.

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string labelText)
{
    // The main part of this code is taken from the internal code for Html.LabelFor<TModel, TValue>(...).
    var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);
    var fieldName = ExpressionHelper.GetExpressionText(expression);

    TagBuilder builder = new …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper asp.net-mvc-2

5
推荐指数
1
解决办法
1770
查看次数