我有一个包含Webview的Xamarin表单应用。我正在尝试使用该webview将表单发布到服务器端asp.net aspx页面。我首先使用 EvaluateJavaScriptAsync 将这些数据发送到应用程序内本地html文件的输入中。数据提交到html文件没有问题。 我有一个列表,我将其从应用程序一侧转换为json字符串,然后传递给html文件,然后正确传递。然后从提交按钮,我将这些数据从本地html发布到服务器端的aspx页面。数据提交成功,但是如果我发布该json字符串,则从服务器端会出现错误(异常)。
例外...
JsonReaderException Unexpected character encountered while parsing value: o. Path'', line 1, position 1
Xamarin侧面...
对象类。
public class PaymentData
{
public string access_key { get; set; }
public string profile_id { get; set; }
public string transaction_uuid { get; set; }
public string signed_field_names { get; set; }
public string unsigned_field_names { get; set; }
public string signed_date_time { get; set; }
public string locale { get; set; }
public string transaction_type { get; set; }
public string reference_number { get; set; }
public string currency { get; set; }
public string bill_to_forename { get; set; }
public string bill_to_surname { get; set; }
public string bill_to_email { get; set; }
public string bill_to_address_line1 { get; set; }
public string bill_to_address_state { get; set; }
public string bill_to_address_country { get; set; }
public string bill_to_address_city { get; set; }
public string polNum { get; set; }
public string userName { get; set; }
public string amount { get; set; }
public double duesTotal { get; set; }
public double addtAmt { get; set; }
public double deposits { get; set; }
public double duesPaid { get; set; }
public List<DueData> lifeDueData { get; set; }
}
public class DueData
{
public string paidDue { get; set; }
public double premium { get; set; }
public double lateFee { get; set; }
}
添加数据后,我将对象转换为json字符串
PaymentData lData = new PaymentData();
string jsonOutput = JsonConvert.SerializeObject(lData);
HTML文件...
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="text/javascript">
function updatetextonwebview(jSonOgj) {
var plots = JSON.parse(jSonOgj);
document.getElementById("textElement1").value = plots.access_key;
document.getElementById("textElement2").value = plots.profile_id;
document.getElementById("textElement3").value = plots.transaction_uuid;
document.getElementById("textElement4").value = plots.signed_field_names;
...........................
document.getElementById("textElement23").value = plots.deposits;
document.getElementById("textElement24").value = plots.duesPaid;
document.getElementById("textElement25").value = plots.lifeDueData;
return plots.lifeDueData;
}
</script>
</head>
<body align="center">
<div class="container card">
<form id="payment_form" action="//....payment_confirmation_life.aspx" method="post">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement1" name="access_key">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement2" name="profile_id">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement3" name="transaction_uuid">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement4" name="signed_field_names">
........................
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement20" name="userName">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement21" name="duesTotal">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement22" name="addtAmt">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement23" name="deposits">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement24" name="duesPaid">
<input type="hidden" class="hiddeninput" hidden="hidden" id="textElement25" name="lifeDueData">
<input type="submit" id="submit" name="submit" value="Proceed" />
</form>
</div>
</body>
</html>
payment_confirmation_life.aspx代码......
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Form.Count > 0)
{
if (Request.Form["lifeDueData"] != null)
{
string demadData = Request.Form["lifeDueData"].ToString().Trim();
List<DueData> duelist = JsonConvert.DeserializeObject<List<DueData>>(demadData);
}
}
}
}
DeserializeObject行中发生异常
JSON ...
[{"lateFee":250,"paidDue":"2020/01","premium":11896}]