5

私は自分がやろうとしていることを明確にするためにできる限りのことをしようとします。

はじめに、私はC#とASP.NETを初めて使用し、javascriptの経験はほとんどありません。

プロンプトボックスを呼び出すjavascript関数があります。全体像は-入力が入力された場合-データベースの列に保存されます。

プロンプトボックスからc#のPostBackに値を渡すときに空白を描画しています。

function newName()
{
    var nName = prompt("New Name", " ");
    if (nName != null)
    {
        if (nName == " ")
        {
            alert("You have to specify the new name.");
            return false;
        }
        else
        {
            // i think i need to getElementByID here???
            //document.forms[0].submit();
        }
    }
}

これは私がC#で持っているものです:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //I have other code that works here
    }
    else
    {
        //I'm totally lost here
    }
}

javascript関数からの入力に対してその呼び出しを行う方法を理解しようとしています。

私はここ数時間、オンラインや本を探してきました。圧倒されました。

編集

私は自分がやろうとしていることに合うように少しtweekingをしました。

<asp:HiddenField ID="txtAction" runat="server" Value="" /> 

document.forms(0).txtAction.Value = "saveevent"; 
document.forms(0).submit();

文字列をテーブルに挿入する方法を今すぐ理解しようとしています.....

 string nEvent = Request.Form["event"]; 
    if (txtAction.Value == "saveevent") { 
                   nName.Insert(); //am i on the right track? 
                 }
4

5 に答える 5

2

さて、ここに1つの可能な方法があります(テストされていませんが、基本的なアイデアを提供する必要があります)。フォームに非表示のフィールドを配置して、プロンプトの値を保持することができます。

<input type="hidden" id="hiddenNameField" runat="server" value="">

次に、ユーザーに値の入力を求め、それを非表示フィールドに設定してから、フォームを送信します。

document.getElementById('hiddenNameField').value = nName;
document.forms(0).submit();

次に、コードビハインドでにアクセスできますhiddenNameField.Value

于 2012-06-07T17:37:22.633 に答える
0

Javaスクリプトを使用して裏面のメソッドを呼び出そうとしている場合は、Webメソッドアプローチを使用してみることができます。

たとえば、SendFormメソッドを呼び出す関数があります

     function SendForm() {
         var name = $("#label").text();
         PageMethods.SendForm(name,
          OnSucceeded, OnFailed);
     }
     function OnSucceeded() {   
     }
     function OnFailed(error) {
     }

そして、javascriptから呼び出されるメソッドがあります。

  [WebMethod(enableSession: true)]
    public static void SendForm(string name)
    {

    }

于 2012-06-07T17:40:40.213 に答える
0
<script language='Javascript'> 
__doPostBack('__Page', ''); 
</script> 

javascriptを使用してPostbackからコピー

于 2012-06-07T17:41:41.060 に答える
0

ここでAJAXリクエストが必要だと思います。犬はあなたのために働くので、jQueryの使用をお勧めします...そうでなければ、AJAX処理のためにすでに書かれた多くの一般的なコードを実装する必要があります。

次のようなもの:

function PromptSomewhere(/* some args if needed*/)
{
    var nName = prompt("New Name", " ");
    // Do process your prompt here... as your code in JS above. Not placed here to be more readable.
    // nName is used below in the AJAX request as a data field to be passed.

    $.ajax({
        type: "post", // may be get, put, delete also
        url: 'place-the-url-to-the-page',
        data {
            name: nName
            // You may put also other data
        },
        dataType: "json",
        error: PromptFailed,
        success: OnPromptComplete
    });
}

function  PromptFailed(xhr, txtStatus, thrownErr) // The arguments may be skipped, if you don't need them
{
    // Request error handling and reporting here (404, 500, etc.), for example:
    alert('Some error text...'); // or
    alery(txtStatus); // etc.
}

function OnPromptComplete(res)
{
    if(!res)
        return;

    if(res.code < 0)
    {
        // display some validation errors
        return false;
    }

    // display success dialog, message, or whatever you want

    $("div.status").html(result.message);
}

これにより、非同期リクエストを使用してサーバーに動的にデータを送信できるようになります。今C#:

using System.Web.Script.Serialization;

protected void Page_Load(object sender, EventArgs e)
{
    if(IsPostBack && ScriptManager.GetCurrent(this).IsInAsyncPostBack)
    {
        string nName = Request.Form["name"];

        // do validation and storage of accepted value
        // prepare your result object with values 



        result.code = some code for status on the other side
        result.message = 'Some descriptive message to be shown on the page';

        // return json result
        JavaScriptSerializer serializer = new JavaScriptSerializer();

        Response.Write(serializer.Serialize(result));
    }
}

注:ASP.NET MVC 2以降を使用すると、JsonResultアクションとRequest.IsAjaxRequest(名前だったと思います)、およびASP.NETの他の多くの機能と改善点を使用できるようになります-ASP.NETMVCは新しいものですMVCパターン(アーキテクチャ)に基づいてWebアプリケーションを作成するためのアプローチであり、いずれはASP.NETページに置き換わる予定です。

于 2012-06-07T18:02:45.917 に答える
0

これは非常に優れたリソースであり、あなたの質問に対する答えが含まれています。

__doPostBack()の使用方法

基本的に、PostbackWithParameter()他のJS関数から関数を呼び出します。

<script type="text/javascript">
function PostbackWithParameter(parameter)
{
    __doPostBack(null, parameter)
}
</script>

そして、コードビハインドで、次のようにそのパラメーターの値を取得します。

public void Page_Load(object sender, EventArgs e)
{
    string parameter = Request["__EVENTARGUMENT"];
}
于 2012-06-07T18:14:39.750 に答える