2013-03-25 78 views

回答

21

你可以打破它在一個Html.Raw電話:

<input type="button" 
     value="Delete" 
     onclick="@(Html.Raw(String.Format("deleteMember({0}, '{1}')", 
      Model.ID, 
      Html.Encode(ViewBag.returnUrl) 
     )))" 
/> 

或指定給一個string第一,然後引用,在屬性變量。

@{ 
    String onclick = String.Format("deleteMember({0}, '{1}')", 
     Model.ID, Html.Encode(ViewBag.returnUrl)); 
} 
<input type="button" value="delete" onclick="@onclick" /> 

第三種選擇是分開擔憂;保持標記和腳本分離。 Neil打我,但類似:

<input type="button" value="delete" 
    data-task="delete" data-id="@Model.ID" data-returnurl="@ViewBag.returnUrl" /> 

<!-- .... --> 

<script> 
    var buttons = document.getElementsByTagName('INPUT'); 
    for (var b = 0; b < buttons.length; b++){ 
    if (buttons[b].type != 'button') continue; 
    switch (buttons[b].getAttribute('data-task') || ''){ 
     case 'delete': 
     // read data-id & data-returnurl. Do something with them, and 
     // move on. 
     break; 

     // other actions 
     case 'add': 
     case 'update': 
     default: 
     break; 
    } 
    } 
</script> 

雖然這是奇怪的第一個括號食堂用剃刀(即使它在屬性的聲明)。我不會期望自己的這種行爲。

+1

傳遞參數通過onclick事件很好的解決方案 – MSTdev 2013-11-11 13:16:26

1

這是更多的VS比其他任何錯誤。

它認爲它仍然會像您期望的那樣呈現。

我喜歡布拉德的解決方案。

另一個推薦的選擇是將您的值彈出到data-dash屬性中,並使用類似jQuery的方法將數據破折號值傳遞給您的函數。

0

另一種方法,你可以做到這一點將分配值的JavaScript變量和使用它們的方法的調用。

<script> 
    var memberId = '@Model.ID'; 
    var returnUrl = '@ViewBag.returnUrl'; 
</script> 

<input type="button" value="Delete" onclick="deleteMember(memberId, returnUrl)"/> 
0

您可以用這種方式太傳遞參數的功能

@Html.DropDownListFor(M => M.SubscriptionType, 
    new SelectList(Model.DefaultPlanName, "value", "displayText"), 
    new { @onclick = "Testnew('"+Model.CreationTime+"')", 
    @class = "form-control selectpicker" })