Ce n'est probablement pas la bonne approche. Considérant la séparation des préoccupations. Vous devriez avoir un data injector
sur votre JavaScript
classe et qui est dans la plupart des cas des données JSON
.
Créez un fichier JS dans votre script
dossier et ajoutez cette référence à votreView
<script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"></script>
Maintenant, considérez une JavaScript
classe littérale dans votre yourJsFile.js
:
var contentSetter = {
allData: {},
loadData: function (data) {
contentSetter.allData = eval('(' + data + ')');
},
setContentA: function () {
$("#contentA").html(allData.contentAData);
},
setContentB: function () {
$("#contentB").html(allData.contentAData);
}
};
Déclarez également une classe
public class ContentData
{
public string ContentDataA { get; set }
public string ContentDataB { get; set }
}
Maintenant, Action
faites ceci:
public ActionResult Index() {
var contentData = new ContentData();
contentData.ContentDataA = "Hello";
contentData.ContentDataB = "World";
ViewData.Add("contentData", contentData);
}
Et de votre point de vue:
<div id="contentA"></div>
<div id="contentB"></div>
<script type="text/javascript">
contentSetter.loadData('@Json.Encode((ContentData) ViewData["contentData"])');
contentSetter.setContentA();
contentSetter.setContentB();
</script>