Có lẽ đây không phải là cách tiếp cận đúng. Cân nhắc tách rời các mối quan tâm. Bạn nên có một data injector
trên JavaScript
lớp của mình và trong hầu hết các trường hợp là dữ liệu JSON
.
Tạo một tệp JS trong script
thư mục của bạn và thêm tham chiếu này vàoView
<script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"></script>
Bây giờ, hãy xem xét một JavaScript
lớp chữ trong yourJsFile.js
:
var contentSetter = {
allData: {},
loadData: function (data) {
contentSetter.allData = eval('(' + data + ')');
},
setContentA: function () {
$("#contentA").html(allData.contentAData);
},
setContentB: function () {
$("#contentB").html(allData.contentAData);
}
};
Cũng khai báo một lớp
public class ContentData
{
public string ContentDataA { get; set }
public string ContentDataB { get; set }
}
Bây giờ, từ bạn Action
làm điều này:
public ActionResult Index() {
var contentData = new ContentData();
contentData.ContentDataA = "Hello";
contentData.ContentDataB = "World";
ViewData.Add("contentData", contentData);
}
Và theo quan điểm của bạn:
<div id="contentA"></div>
<div id="contentB"></div>
<script type="text/javascript">
contentSetter.loadData('@Json.Encode((ContentData) ViewData["contentData"])');
contentSetter.setContentA();
contentSetter.setContentB();
</script>