2010-07-20 1 views
5

Được rồi, câu hỏi khá đơn giản. Tôi nghĩ rằng tôi cần phải thả một số nhân vật trốn thoát, nhưng tôi không hoàn toàn chắc chắn ở đâu.Làm cách nào để chuyển các giá trị mô hình dưới dạng tham số hàm javascript từ bên trong một trình trợ giúp Html mvc Html như Html.Radio?

Dưới đây là chức năng javascript Tôi đang cố gắng gọi:

function setData(associateValue, reviewDateValue) { 
    var associate = document.getElementById("Associate"); 
    var reviewDate = document.getElementById("ReviewDate"); 
    associate.value = associateValue; 
    reviewDate.value = reviewDateValue; 
} 

Đây là asp dòng .net MVC nơi tôi đang cố gắng để tạo ra một nút Radio với một sự kiện nhấp chuột mà gọi hàm trên và chuyển dữ liệu từ mô hình dưới dạng giá trị tham số javascript.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('<%=item.Associate%>','<%=item.ReviewDate%>')" })%> 

Ở trên ném một loạt các vấn đề biên dịch và không hoạt động. Một cuộc gọi như sau không gọi javascript, nhưng không nhận được dữ liệu từ mô hình.

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate')" })%> 

<%= Html.RadioButton("Selected", item.Selected, new { onClick="setData('item.Associate','item.ReviewDate')" })%> 

Suy nghĩ?

SOLUTION

 <% String functionCall = String.Format("setData('{0}','{1}')", Html.Encode(item.Associate), Html.Encode(item.ReviewDate)) ; %> 
     <%= Html.RadioButton("Selected", item.Selected, new { onClick=functionCall })%>     

Trả lời

10

Bạn cần phải xây dựng đúng chuỗi đại diện cho handler onclick evenet:

onClick = String.Format("setData('{0}', '{1}')", item.Association, item.ReviewData) 
+1

+1, chỉ cần thêm mã HTML để đảm bảo các trích dẫn có thể có trong dữ liệu mô hình được thoát đúng cách. –

+0

Yêu câu trả lời này marc. Rất đơn giản. – jason

1

Nó phải là như thế này:

<%: Html.RadioButton("Selected", item.Selected, new { onClick="setData('" + Html.Encode(item.Associate) + "','" + Html.Encode(item.ReviewDate) + "')" })%> 

Và nếu nó MVC2 bạn nên thích sử dụng: thay vì = để chắc chắn rằng nó HTML mã hóa.

+0

Lưu ý rằng '<%:' không thực hiện bất kỳ sự khác biệt ở đây, vì Html.RadioButton trả về một IHtmlString mà thắng' t được xúc động bởi '<%:'. Tuy nhiên, bạn nên sử dụng '<%:' theo mặc định, chỉ sử dụng '<% =' khi bạn biết mình cần nó. – stevemegson