我如何使对象转换为名称.First而不是Name[First]



我在一个网站上工作,我有一个控制器,在大量的数据,包括一个名称字段:

public Name name { get; set; }

定义如下:

public class Name
{
    [RegularExpression(@"^[a-zA-ZÀ-ÿs-'.*]*$")]
    public string First { get; set; }
    [RegularExpression(@"^[a-zA-ZÀ-ÿs-'.*]*$")]
    public string Last { get; set; }
    public string DatabaseName { get; set; }
}

我一直在使用MVC页面,通过这个控制器传递数据,它的工作原理。这个页面上的所有字段都是MVC HTML helper,所以我有一个输入框:

@HTML.TextBoxFor(m => m.Name.First)

使用Fiddler,我可以看到数据作为Name传递。第一个:"john",这是正确的,这将正确返回结果。

然而,我有另一个页面,我不能使用HTML帮助。对于大多数字段,我能够使用JSON和异步AJAX调用正确获取数据:

var queryModel = {
    SoundEx: $("#Soundex").val(),
    ExactSearch: $(".exact").val(),
    Name : {First : $('.col-sm-5 > .form-control[placeholder="First and Middle Names"]').val(), 
    Last: $('.col-sm-5 > .form-control[placeholder="Last Name"]').val()},
    FromYear: $('.form-control[id="yearFrom"]').val(),
    ToYear: $('.form-control[id="yearTo"]').val(),
    SelectedType: $("#RecordDropdown").val(),
    Location: $('.form-control[placeholder="Enter Location"]').val(),
    Favorites: $("#Favorite").val(),
    Free: $("#Free").val(),
    Images: $("#Images").val(),
    Category: $("#category").val(),
    Database: $("#database").val(),
    Keywords: $('.form-control[placeholder="Enter terms or words"]').val(),
    FamilyMembers: [{ Relationship: $("#Type1").val(), Firstname: $("#First1").val(), LastName: $("#Last1").val() },
                    { Relationship: $("#Type2").val(), Firstname: $("#First2").val(), LastName: $("#Last2").val() },
                    { Relationship: $("#Type3").val(), Firstname: $("#First3").val(), LastName: $("#Last3").val() }],
    PageNum: 1,
    PageSize: 20,
    newSearch: 1,
    SortBy: "Relevance"
}
$(resultsDiv).html("<h3>Searching...</h3>");
resultsDiv.show();
$.ajax({
    url: "http://nehgs.mvc/SearchResults/Results",
    type: 'post',
    dataType: 'text/html',
    success: function (info) {
        $(resultsDiv).html(info.responseText);
    },
    data: queryModel
});

我所有的搜索字段工作,除了名称和关系字段,即,无论在他们中输入的是正确的搜索在我的数据库中,返回的结果是正确的。然而,当填写姓名或关系字段时,它们不会被搜索;我仍然得到返回的数据,但是这些字段被视为空白。

在Fiddler中,我可以看到这些字段被传递为

Name[First]

Relationships[0][Firstname]

而在这些字段正在工作的页面中,它们被传递为

Name.First

Relationships[0].Firstname

这是我能想到的唯一导致这个问题的原因。我如何使JSON作为名称传递。用First代替Name[First]?

我通过使用本页提供的toDictionary()插件解决了这个问题:

http://erraticdev.blogspot.com/2010/12/sending-complex-json-objects-to-aspnet.html

相关内容

最新更新