Asp.net mvc 为html Id attibute创建一个名称系统,这样它们就不会重复

Asp.net mvc 为html Id attibute创建一个名称系统,这样它们就不会重复,asp.net-mvc,Asp.net Mvc,我不确定我是否有道理,也许有更简单的方法 我正在构建一个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

我不确定我是否有道理,也许有更简单的方法

我正在构建一个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 post调用以保存我的作者时,我面临的问题是,当我使用jQuery调用我的字段时,我已经有了一个#Name字段,它是为我的书呈现的字段,如下所示:
$('#Name')。val()
它将获取第一个#名称

这很容易解决,我将创建一个#AuthorName和一个#BookName

现在我担心,如果我的名字系统不稳定,我的应用程序将不稳定

那么有没有办法建立一个名字系统呢

我不知道怎么做,但我想这样写我的身份证:

 @Html.TextBoxFor(u => u.Id, new { @id = "@MyDialogs.Authors.Add.Name" })
<form>
    <input type='text' id='Name' name='Name' />
    // ... other stuff ...
    <input id='add-book' type='button' value='Add' />
</form>
这将返回如下内容:
对话框作者添加名称字段


这是可能的,还是我太懒了?

你可以这样做,但我认为这没有多大意义——这很难维持。您必须创建这个外部名称列表,它与您只是更好地命名事物相比,不太可能出现错误

请考虑改写你的JavaScript,让它更“封闭”。不要使用像
$(“#Name”)
这样的全局搜索,而是将其范围扩大到局部视图

例如,如果您的局部视图如下所示:

 @Html.TextBoxFor(u => u.Id, new { @id = "@MyDialogs.Authors.Add.Name" })
<form>
    <input type='text' id='Name' name='Name' />
    // ... other stuff ...
    <input id='add-book' type='button' value='Add' />
</form>
这样,不管表单上还有什么,不管是否有名称冲突,它都可以在任何地方使用