2013-10-04 2 views
0

Я прочитал много сообщений здесь и многих других сайтов, и поэтому я собрал несколько версий КАК это сделать. Моя проблема в том, что я не могу заставить его ничего делать.Невозможно получить Javascript для стрельбы из C# codebehind

Вот Javascript, просто предупреждение для тестирования:

<script type="text/javascript"> 
     function ICDcheck() { 
       alert('Patient has an ineligible diagnosis code!'); 
     } 
    </script> 

Я проверил это вручную путем добавления функции к OnClientClick кнопки, и она работала отлично.

Вот что я пытался в коде:

ClientScript.RegisterClientScriptBlock(this.GetType(), "uniqueKey", "ICDcheck()", true); 

и ...

string jsMethodName = "ICDcheck()"; 
    ScriptManager.RegisterClientScriptBlock(this, typeof(string), "uniqueKey", jsMethodName, true); 

и ...

lblJavaScript.Text = "<script type='text/javascript'>ICDcheck();</script>"; 

Этот последний ссылается на метку Я сижу в верхней части моего asp: Содержимое чуть ниже скрипта и блок asp: ScriptManager.

Я поместил эти биты в button_click, page_load, sqldatasource_selecting, formview_PageIndexChanging и всегда то же самое, ничего.

Как всегда, спасибо за ваше терпение и помощь. Мое невежество, скорее всего, будет раскрыто как проблема, но я учусь.

+0

Попробуйте Page.ClientScript.RegisterStartupScript ( GetType(), "MyKey", "ICDcheck();", правда); Также установите firebug и проверьте, есть ли ошибки скрипта. – Zaki

+0

Проверьте, используя метод IsClientScriptBlockRegistered, если скрипт с уникальным именем зарегистрирован или нет. Подробнее см. На http://msdn.microsoft.com/en-us/library/aa5tktc9.aspx – mit

+0

ДА! Сэм, это сработало. Хорошее горе Я хотел бы знать, почему существует так много способов сделать одно и то же, и почему некоторые из них работают для некоторых людей, а не для других.Или эти другие предназначены для использования в конкретных случаях, о которых я не совсем понимаю? В любом случае, спасибо, что нашли время, чтобы помочь мне. –

ответ

1

Попробуйте использовать Page.ClientScript:

Page.ClientScript.RegisterStartupScript(GetType(), "MyKey", "ICDcheck();", true); 

Также установите firebug и проверьте, есть ли какая-либо ошибка сценария.

0

Попробуйте

<button ID="your_btn" onclick="javascript:your_function(); return false;"><asp:literal ID="your_literal" runat="server" /></button> 

и

<script type="text/javascript"> 
    function your_function() { 
      alert('Patient has an ineligible diagnosis code!'); 
    } 
</script> 
1

Попробуйте это. На вашей странице есть кнопка:

<asp:Button ID="RunJsButton" runat="server" Text="Button" /> 

Затем в коде-позади, впрыснуть сценарий в ответ и добавить wireup к кнопке:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string scriptToRun = @"function ICDcheck() { alert('Patient has an ineligible diagnosis code!');}"; 

     ClientScript.RegisterClientScriptBlock(this.GetType(), "", scriptToRun, true); 
     RunJsButton.OnClientClick = "return ICDcheck();"; 
    } 

Если это своего рода что вы после, вы можете реорганизовать его немного для внедрения лучшей практики.

+0

Я тоже проверю это, чтобы лучше понять эти вещи. Спасибо за помощь. –

+1

@R_Scott Если вы хотите получить действительно фантазию, вы можете создать такой класс, как тот, который находится в этих двух сообщениях [сначала] (http://www.west-wind.com/weblog/posts/2008/Feb/12/Embedding -ASPNET-Server-Variables-in-Client-JavaScript) и [второй] (http://www.west-wind.com/weblog/posts/2008/Feb/21/Embedding-ASPNET-Server-Variables-in- Клиент-JavaScript-Часть-2). Раньше я использовал что-то подобное, когда я писал приложения для веб-форм. – onefootswill

0

Это должно сработать.

string jsToRun = "<script language=javascript>ICDcheck();</script>"; 

Type csType = this.GetType(); 

ClientScript.RegisterStartupScript(csType, "Key", jsToRun); 
Смежные вопросы