我已经看到了其他几个与此相似的问题,我似乎有一个奇怪的转折。我有一个时间表网络应用程序,一名员工在一张桌子上提交他们的时间,它被发送给H.R.作为readonly。然后,H.R。可以根据某些标准批准或拒绝他们的时间表。我认为如果H.R. Rep可以点击不正确的单元格并将它们变成红色会很好,因此当它被拒绝并发回给员工时,很容易看到他们需要纠正的内容。
我用Javascript编写了这个小片段,效果很好:
var validTextArray = {};
var backgroundColorArray = {};
function clearTextBox(textBoxID)
{
if (document.getElementById(textBoxID).value != "#ERROR")
{
backgroundColorArray[textBoxID] = document.getElementById(textBoxID).style.backgroundColor;
validTextArray[textBoxID] = document.getElementById(textBoxID).value;
document.getElementById(textBoxID).value = "#ERROR";
document.getElementById(textBoxID).style.backgroundColor = "red";
}
else if (validTextArray[textBoxID] != null)
{
document.getElementById(textBoxID).value = validTextArray[textBoxID];
document.getElementById(textBoxID).style.backgroundColor = backgroundColorArray[textBoxID];
}
}
并且明确我的c#就是这样:
day1PH.Attributes["onclick"] = "clearTextBox(this.id)";
day1PN.Attributes["onclick"] = "clearTextBox(this.id)";
day1LV.Attributes["onclick"] = "clearTextBox(this.id)";
day1TL.Attributes["onclick"] = "clearTextBox(this.id)";
day2PH.Attributes["onclick"] = "clearTextBox(this.id)";
day2PN.Attributes["onclick"] = "clearTextBox(this.id)";
day2LV.Attributes["onclick"] = "clearTextBox(this.id)";
//etc...
这部分工作得很漂亮,问题是我需要能够捕获这些错误。现在当H.R。命中拒绝按钮时,表中的所有数据都被重写为SQL数据库,但由于文本是由javascript设置的,因此“#ERROR”值不会通过。
我可以做些什么来捕获这些值?
答案 0 :(得分:0)
我猜你正在使用webforms,如果你是,你可以使用隐藏字段并使用错误设置value属性,然后当你将表单发布到你的web服务器时,你可以使用Request.Form [&]来获取这个值。 #34; nameOfYourHiddenAttribute"。]
<input id="hdnErrors" type="hidden" name="error" value="xpto">
string error = Request.Form["error"] + ""; //error is 'xpto'
如果你有多个错误,你可以在javascript中使用一些字典,最后你可以序列化到json对象e把它放在隐藏值中然后,在你的服务器端代码中,你可以反序列化并使用它。 / p>
像这样的东西(没有测试它)
var arrayObject = [];
var error = {txtId = "txt1", description="HR error"};
arrayObject.push(error);
document.getElementById('hdnErrors').value = JSON.stringify(arrayObject);