خروج المغلوب.شبيبة وقائمة مربعات الاختيار:آخر إلى مفك المراقب المالي
سؤال
لدي نموذج عرض مفك التي تبدو مثل هذا:
public class DirectorySearchModel
{
[Display(Name = "First name contains")]
public string FirstName { get; set; }
[Display(Name = "Last name contains")]
public string LastName { get; set; }
public CountriesCollection Countries { get; set; }
public IEnumerable<Country> SelectedCountries { get; set; }
public IEnumerable<Country> AllCountries { get; set; }
}
يبدو كائن كونتريسكولكتيون (السطر 9) كما يلي:
public class CountriesCollection
{
[Display(Name = "Countries")]
public int[] arrCountries { get; set; }
}
الآن ، أنا خلق مثيل جديد ، فارغة من كونتريسكولكتيون ومن ثم إضافته إلى مثيل فارغ من نموذج عرض ديركتوريسيرتشموديل ومن ثم تسلسل كل ذلك في نموذج عرض جافا سكريبت ل خروج المغلوب.شبيبة:
{
"FirstName":null,
"LastName":null,
"Countries":{"arrCountries":[]},
"SelectedCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}],
"AllCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}]
}
يتم عرض مربعات الاختيار الخاصة بي على النحو التالي: <input checked="checked" data-bind="checked: Countries.arrCountries" id="Countries_arrCountries30" name="Countries.arrCountries" type="checkbox" value="1">
.التحقق من زوجين يعني أنك في نهاية المطاف مع هذه الضربة القاضية.شبيبة عرض نموذج:
{
"FirstName":null,
"LastName":null,
"Countries":{"arrCountries":["1", "3"]},
"SelectedCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}],
"AllCountries":[{"RelationshipManager":{},"CountryId":1,"CountryName":"UK"},{"RelationshipManager":{},"CountryId":2,"CountryName":"France"},{"RelationshipManager":{},"CountryId":3,"CountryName":"Spain"}]
}
تقديم وجهة نظري بشكل طبيعي (أي.عن طريق زر إرسال وليس مع خروج المغلوب.شبيبة) إلى إجراء مفك التي تتوقع DirectorySearchModel
, ، أنا قادر على طلب model.Countries.arrCountries
للحصول على قائمة بالعناصر المحددة ، ولكن عند استخدامها...
$.post("/MyController/MyAction", ko.toJS(viewModel), function(returnData) {
$("#resultCount").html(returnData);
});
أو...
$.post("/MyController/MyAction", viewModel, function(returnData) {
$("#resultCount").html(returnData);
});
إلى إجراء آخر يتوقع نفس الشيء DirectorySearchModel
, model.Countries.arrCountries
دائما null
!تساءلت عما إذا كان ذلك بسبب الضربة القاضية.شبيبة نشر arrCountries
مقالات كما string[]
ق عندما مفك تتوقع int[]
ق ، ولكن تغيير رمز مفك بلدي أن نتوقع string[]
لا يبدو أن الصورة تتغير كثيرا..!ال CountriesCollection
كائن داخل DirectorySearchModel
يبدو أنه موجود ، لكنه arrCountries
داخل هذا دائما null
.
أي أفكار?أي مساعدة محل تقدير كبير!
تحرير
الإجراء الذي يتلقى الضربة القاضية.شبيبة فيوموديل:
public MvcHtmlString ResultCount(DirectorySearchModel model)
{
return new MvcHtmlString(getResultCount(model).ToString());
}
ال getResultCount
الطريقة:
public int getResultCount(DirectorySearchModel model)
{
IUserRepository userRepository = new UserRepository();
int count = userRepository.Search(model, null).Count();
return count;
}
ثابت!
بفضل كونستانتين لافتا إلى أن التحول بسيط من $.أضف إلى $.اياكس لإرسال خروج المغلوب بلدي.شبيبة عرض نموذج العودة إلى بلدي مفك العمل كان كل ما هو مطلوب!ها هي $.رمز اياكس أنا باستخدام:
$.ajax({
type: "POST",
url: "/MyController/MyAction",
data: ko.toJSON(viewModel),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#resultCount").html(data);
}
});
المحلول
لا يمكنك استخدام $.آخر تحتاج إلى الذهاب ل underlying الأساسية.أجاكس وإضافة كونتنتتيب الصحيح لجعل مفك قبول جسون نشرها والقيام نموذج ملزمة (كونتنتتيب يجب أن يكون " تطبيق / جسون;محارف = أوتف-8") جوجل لذلك ، وسوف حد ذاتها الكثير من الأمثلة