देखने के लिए जेएसओएन व्यू मॉडेल पास करें मेरे पास एक एमवीसी एप्लीकेशन है जो मैं जावास्क्रिप्ट व्यू मॉडेल को पॉप्युलेट करने के लिए विभिन्न JsonResult
एंडपॉइंट्स का उपयोग कर रहा हूं।एमवीसी पास
मैं मॉडल को पॉप्युलेट करने के लिए कई jQuery अजाक्स अनुरोधों का उपयोग कर रहा हूं, लेकिन मैं सर्वर पर देखने के लिए जितना अधिक आंतरिक मॉडल पारित करना चाहता हूं।
- बेसिक पृष्ठ लिंक, ये बहुत अक्सर नहीं बदलते हैं और पूरे उपयोगकर्ता के भर में ठीक उसी हो सकता है:
ViewModel 3-5 टुकड़े (जिसमें उपयोगकर्ता आवेदन में है के आधार पर) है सत्र
- उपयोगकर्ता सूचनाएं।
- उपयोगकर्ता डेटा।
- (वैकल्पिक) देखे जाने योग्य डेटा
- (वैकल्पिक) विविध डेटा
मैं वर्तमान में पहले तीन टुकड़े लोड करने के लिए इस कोड का उपयोग कर रहा हूँ:
$(document).ready(function() {
ko.applyBindings(viewModel);
@Html.Raw(ViewBag.Script)
// Piece 1. Almost always the same thing
postJSON('@Url.Action("HomeViewModelJson", "Home")', function (data) {
if (data == null)
return;
for (var i in data.Tabs) {
viewModel.tabs.push({ name: data.Tabs[i] });
}
for (var i in data.Buttons) {
viewModel.metroButtons.push({ name: data.MetroButtons[i] });
}
for (var i in data.Ribbons) {
viewModel.ribbons.push(data.Ribbons[i]);
}
ApplyButtonThemes();
});
});
// Piece 2. Changes constantly. OK as is
postJSON('@Url.Action("GetNotifications", "NotificationAsync")', function (nots) {
viewModel.notifications.removeAll();
ko.utils.arrayForEach(nots, function (item) {
item.readNotification = function() {
hub.markNotificationAsRead(this.Id);
return true;
};
viewModel.notifications.push(item);
});
});
// Piece 3. Changes but should also be loaded at startup
postJSON('@Url.Action("GetUser", "UserAsync")', function (user) {
viewModel.user(koifyObject(user));
});
postJSON = function(url, data, callback) {
if($.isFunction(data)) {
callback = data;
data = {};
}
$.ajax({
'type': 'POST',
'url': url,
'contentType': 'application/json',
'data': ko.toJSON(data),
'dataType': 'json',
'success': callback
});
};
मैं कुछ इस तरह कर रही है की कोशिश की, लेकिन मुझे लगता है कि @Html.Action("HomeViewModelJson", "Home")
का उपयोग करके HTTP शीर्षलेख बदलना पड़ रहा है और पूरा पृष्ठ भेजा गया है जैसे कि यह JSON
(function (data) {
if (data == null)
return;
for (var i in data.Tabs) {
viewModel.tabs.push({ name: data.Tabs[i] });
}
for (var i in data.MetroButtons) {
viewModel.metroButtons.push({ name: data.MetroButtons[i] });
}
for (var i in data.Ribbons) {
viewModel.ribbons.push(data.Ribbons[i]);
}
ApplyMetroButtonThemes();
})('@Html.Action("HomeViewModelJson", "Home")');
मैं जो करना चाहता हूं वह मौजूदा JsonResult
एंडपॉइंट्स का उपयोग सर्वर पर भेजे जाने से पहले, सर्वर पक्ष पर जेसन डेटा को मेरे व्यूमोडेल में प्राप्त करने के लिए है।
क्या कोई विकल्प है जो मुझे अपने नियंत्रकों को फिर से लिखने की अनुमति देगा?
लगता है कि! मुझे इसे आज़माएं :) मुझे यह भी पता नहीं था कि यह संभव था! –
स्वीकार करने के लिए भूल गए। महान काम किया! –
+1 अच्छा ............. – SleepyBoBos