добавить ссылку на файл js из функции javascript - PullRequest
0 голосов
/ 12 мая 2011

Я работаю над задачей, в которой я динамически создаю элемент управления вводом и создаю файл js, используя streamwriter в коде c # для проверки элемента управления вводом.Теперь я хочу добавить ссылку на созданный в настоящий момент js-файл на моей странице aspx.

мой метод управления вводом create является webmethod, и я вызываю его с помощью ajax-json со стороны клиента.веб-метод:

[WebMethod]
public static string LoadDatanGenerateControls(int PostTypeID, int CategoryID)
{
    DataTable dtControls = new DataTable();
    StringBuilder sb = new StringBuilder();
    dtControls = PostingExtendedFields.GetExtendedDFields(PostTypeID, CategoryID);
    sb.Append("<table>");
    foreach (DataRow dr in dtControls.Rows)
    {
        sb.Append("<tr><td>");
        sb.Append("<input value=';" + dr["RequiredError"].ToString() + "'; type=';text'; size=';20'; id=';txt_" + dr["FieldName"].ToString() + "'; class=';riTextBox riEmpty'; style=';width:450px;'; onfocus =';Focus(this);'; onblur=\"Blur(this,';" + dr["RequiredError"].ToString() + "';);\"/>");
        sb.Append("</td></tr>");
    }
    sb.Append("</table>");
    //create the js file
    string path = HttpContext.Current.Server.MapPath("") + "\\";
    if (File.Exists(path + "sale.js")) File.Delete(path + "sale.js");//delete if exist
    using (StreamWriter sw = new StreamWriter(path + "sale.js"))
    {
        sw.WriteLine("function Focus(obj) {");
        sw.WriteLine("var id = obj.id;");
        sw.WriteLine("$(';#'; + id).val(';';);");
        sw.WriteLine(" }");
        sw.WriteLine("function Blur(obj, title) {");
        sw.WriteLine("var id = obj.id;");
        sw.WriteLine("if ($(';#'; + id).val() == ';';) {");
        sw.WriteLine("$(';#'; + id).val(title);");
        sw.WriteLine("}");
        sw.WriteLine(" }");
    }
    return sb.ToString();
}

На странице aspx:

 function LoadControls() {
        try {
            var types = $find("<%= ddlPost.ClientID %>");
            var Category = $find("<%= ddlCategory.ClientID %>");
            var typeID = types.get_value();
            var catID = Category.get_value();
            ///web method
            $(';#TDDynamicContents';).html(';';);
            $.ajax({
                type: "POST",
                url: "Default.aspx/LoadDatanGenerateControls",
                data: "{';PostTypeID';:';" + typeID + "';,';CategoryID';:';" + catID + "';}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    if (msg.d.length > 0) {
                        $(';#TDDynamicContents';).html(msg.d);
                        //add js file path
                        addjsfile("sale.js", "js")
                    }
                },
                async: false,
                error: function(xhr, status, error) {
                    alert(xhr.statusText);
                }
            });
        } catch (e) { }
    }

    function addjsfile(filename, filetype) {
        alert(filetype);
        if (filetype == "js") {
            var fileref = document.createElement(';script';);
            fileref.setAttribute("type", "text/javascript");
            fileref.setAttribute("src", filename);
        }
        if (typeof fileref != "undefined") {
            document.getElementsByTagName("head")[0].appendChild(fileref);
            alert(fileref);
        }
    }

, но моя функция addjsfile вообще не работает.не добавляется ссылка в разделе Head, и я не могу использовать функции в файле js.

1 Ответ

0 голосов
/ 12 мая 2011

решение вашей проблемы - использовать следующую строку кода в случае, если вы используете функцию js или просто при загрузке страницы ClientScript.RegisterClientScriptInclude ( "MyScript", "MyJavaScript.js") более подробное обсуждение идет здесь


если вы собираетесь использовать для этого только блок javascript, взгляните на него, если он вам поможет

Нажмите здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...