我会努力尽我所能来表达我想要做的事情。
让我先说一下我是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函数调用输入。
我花了最近几个小时在网上看书。不知所措。
修改
我做了一个小小的推文,以适应我正在尝试做的事情....
<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?
}
答案 0 :(得分:2)
嗯,这是一种可能的方式(未经测试但应该给你基本的想法)。您可以在表单上放置一个隐藏字段来保存提示的值:
<input type="hidden" id="hiddenNameField" runat="server" value="">
然后提示用户输入值,将其设置为隐藏字段,然后提交表单:
document.getElementById('hiddenNameField').value = nName;
document.forms(0).submit();
然后在您的代码隐藏中,您只需访问hiddenNameField.Value
。
答案 1 :(得分: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)
{
}
答案 2 :(得分:0)
<script language='Javascript'>
__doPostBack('__Page', '');
</script>
复制
答案 3 :(得分: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.NET MVC是基于MVC模式(体系结构)创建Web应用程序的新方法,最终将在一段时间内取代ASP.NET页面。
答案 4 :(得分:0)
这是一个非常好的资源,包含您问题的答案:
基本上,从你的其他JS函数调用PostbackWithParameter()
函数:
<script type="text/javascript">
function PostbackWithParameter(parameter)
{
__doPostBack(null, parameter)
}
</script>
在您的代码隐藏中,抓住该参数的值,如下所示:
public void Page_Load(object sender, EventArgs e)
{
string parameter = Request["__EVENTARGUMENT"];
}