Probablemente este no sea el enfoque correcto. Considerando la separación de preocupaciones. Debería tener un data injector
en su JavaScript
clase y, en la mayoría de los casos, los datos sonJSON
.
Cree un archivo JS en su script
carpeta y agregue esta referencia a suView
<script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"></script>
Ahora, considere una JavaScript
clase literal en su yourJsFile.js
:
var contentSetter = {
allData: {},
loadData: function (data) {
contentSetter.allData = eval('(' + data + ')');
},
setContentA: function () {
$("#contentA").html(allData.contentAData);
},
setContentB: function () {
$("#contentB").html(allData.contentAData);
}
};
También declara una clase
public class ContentData
{
public string ContentDataA { get; set }
public string ContentDataB { get; set }
}
Ahora, de tu Action
haz esto:
public ActionResult Index() {
var contentData = new ContentData();
contentData.ContentDataA = "Hello";
contentData.ContentDataB = "World";
ViewData.Add("contentData", contentData);
}
Y desde tu punto de vista:
<div id="contentA"></div>
<div id="contentB"></div>
<script type="text/javascript">
contentSetter.loadData('@Json.Encode((ContentData) ViewData["contentData"])');
contentSetter.setContentA();
contentSetter.setContentB();
</script>