创建一个名称系统到html Id attibute,这样他们就不会重复

时间:2014-01-07 00:49:12

标签: asp.net-mvc

我不确定我是否有意义,也许有更简单的方法。

我正在构建一个基于Bootstrap模型的Web应用程序,我想要的是显示一个模型来对我的数据库进行CRUD操作。

例如,我将有这样的模型:

public class Author
{
    public int id { get; set; }
    public string Name { get; set; }
}

public class Book
{
    public int id { get; set; }
    public string Name { get; set; }
}

我想要的是制作一个部分视图,它将显示一个对话框(模态)以向我的应用添加新作者,与书籍相同,以及我的应用将拥有的'n'类,我想渲染这些部分我需要的地方。所以我可以从我页面的任何视图添加作者。

那部分没问题,现在我遇到了一些'麻烦',因为当我在我的数据库中进行ajax调用以保存我的作者时,我面对的是我已经有一个#Name字段,这是我为我呈现的字段当我用jQuery调用我的字段时,现在预订模态:$('#Name').val()它将获取第一个#name。

这很容易解决我将创建#AuthorName和#BookName。

现在我害怕如果我的名字系统没有,我的申请将不会稳定。

那么有没有办法建立名称系统?

我不知道该怎么做,但我想写这样的id:

 @Html.TextBoxFor(u => u.Id, new { @id = "@MyDialogs.Authors.Add.Name" })

将返回如下内容:dialogs-authors-add-namefield

这可能还是我太懒了?

1 个答案:

答案 0 :(得分:0)

你可以做类似的事情,但我认为它没有多大意义 - 它很难维护。您必须创建这个名称的外部列表,这些名称不会比您更好地命名错误。

相反,请考虑重写您的javascript以使其更加“封闭”。而不是像$('#Name')那样使用全局搜索,而是将其范围限定在局部视图中。

例如,如果您的部分视图看起来像这样:

<form>
    <input type='text' id='Name' name='Name' />
    // ... other stuff ...
    <input id='add-book' type='button' value='Add' />
</form>

然后你的javascript看起来像

$('#add-book').click(function () {
    var name = $(this).closest('form').find('#name').val();
    // ... do something with the name ...
});

这样,表单上的其他内容无关紧要,如果您有名称冲突并不重要,它可以在任何地方使用