- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Facebook 应用程序,我有一个用户填写的表单,提交后,我想通过 facebook canvas 付款向他们收费。当然,这意味着 modeldata 需要首先有效,但我总是觉得 mvc 代码只有在 javascript 代码调用它之后才运行。我如何在下面的 mvc 方法中调用这个 javascript 命令?
function buy() {
var obj = {
method: 'pay',
action: 'purchaseitem',
product: 'https://mywebsite.net/product.html'
};
FB.ui(obj, function(data) {
console.log(data);
});
}
**document.getElementById('submitbtn').onclick = function() {buy()};** // trying to only call this after model data is valid
};
[HttpPost]
public ActionResult Contact(Project.Models.Order c)
{
decimal price = 0;
if (ModelState.IsValid)
{
try
{
// call javascript code here to open the window
}
catch (Exception)
{
return View("Error");
}
}
return View("Index");
}
public async Task<ActionResult> Index(FacebookContext context)
{
if (ModelState.IsValid)
{
//var user = await context.Client.GetCurrentUserAsync<MyAppUser>();
//var client = new FacebookClient(context.AccessToken);
//dynamic me = client.Get("me");
//string name = me.Name;
loadDropDownLists();
return View();
}
return View("Error");
}
索引 View
@using HomeworkHelpers.Models
@using Microsoft.AspNet.Facebook.Models
@model HomeworkHelpers.Models.Order
@{
ViewBag.Title = "Home Page";
}
@section PageScripts{
<script type="text/javascript">
$(document).ready(function () {
$('#documentTypeList').change(function () {
var modelData = {
documentType: $('#documentTypeList').val(),
urgency: $('#urgencyList').val(),
numberOfPages: $('#numberOfPagesList').val()
};
$.ajax({
type: "GET",
data: modelData,
url: "/Home/getNewPrice",
async: true,
success: function (data) {
$('#priceLabel').html(data.currentPrice);
$('#UnFormattedPrice').val(data.unformattedCurrectPrice);
}
});
});
$('#numberOfPagesList').change(function () {
var modelData = {
documentType: $("#documentTypeList").val(),
urgency: $("#urgencyList").val(),
numberOfPages: $("#numberOfPagesList").val()
};
$.ajax({
type: "GET",
data: modelData,
url: "/Home/getNewPrice",
async: true,
success: function (data) {
$('#priceLabel').html(data.currentPrice);
$('#UnFormattedPrice').val(data.unformattedCurrectPrice);
}
});
});
$('#urgencyList').change(function () {
var modelData = {
documentType: $("#documentTypeList").val(),
urgency: $("#urgencyList").val(),
numberOfPages: $("#numberOfPagesList").val()
};
$.ajax({
type: "GET",
data: modelData,
url: "/Home/getNewPrice",
async: true,
success: function (data) {
$('#priceLabel').html(data.currentPrice);
$('#UnFormattedPrice').val(data.unformattedCurrectPrice);
}
});
});
$('.spacing').click(function () {
var select = $("#numberOfPagesList");
select.empty().append($('<option></option>').val('').text('--Select--'));
var url = '@Url.Action("NumberOfPagesList", "Home")';
$.getJSON(url, { id: $(this).val() }, function (data) {
$.each(data, function (i, item) {
select.append($('<option></option').val(item.Value).text(item.Name));
});
});
});
$('#currencyList').change(function () {
$.ajax({
type: "GET",
url: "/Home/changeCurrency?newCurrency=" + this.value,
async: true,
success: function (result) {
$('#priceLabel').html(result.currentPrice);
}
});
});
});
</script>
@if (Model.Buy)
{
<script>
$(document).ready(function () {
buy();
});
</script>
}
}
@using (Html.BeginForm("Contact", "Home", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div class="row">
@Html.LabelFor(model => model.Name, "Name:")
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="row">
@Html.LabelFor(model => model.Email, "Email:")
@Html.EditorFor(model => model.Email, new { id = "email" })
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="row">
@Html.LabelFor(model => model.PhoneNumber, "Phone Number:")
@Html.EditorFor(model => model.PhoneNumber, new { id = "phoneNumber" })
@Html.ValidationMessageFor(model => model.PhoneNumber)
</div>
<div class="row">
@Html.LabelFor(model => model.Topic, "Topic:")
@Html.EditorFor(model => model.Topic)
@Html.ValidationMessageFor(model => model.Topic)
</div>
<div class="row">
@Html.LabelFor(model => model.Subject, "Subject:")
@Html.DropDownListFor(model => model.Subject, (SelectList)ViewBag.subject, "--Select--", new { id = "subjectList" })
@Html.ValidationMessageFor(model => model.Subject)
</div>
<div class="row">
@Html.LabelFor(model => model.Style, "Style:")
@Html.DropDownListFor(model => model.Style, (SelectList)ViewBag.paperStyle, "--Select--", new { id = "paperStyleList" })
@Html.ValidationMessageFor(model => model.Style)
</div>
<div class="row">
@Html.LabelFor(model => model.DocumentType, "Document Type:")
@Html.DropDownListFor(model => model.DocumentType, (SelectList)ViewBag.documentType, "--Select--", new { id = "documentTypeList" })
@Html.ValidationMessageFor(model => model.DocumentType)
</div>
<div class="row">
@Html.LabelFor(model => model.AcademicLevel, "Academic Level:")
@Html.DropDownListFor(model => model.AcademicLevel, (SelectList)ViewBag.academicLevel, "--Select--", new { id = "academicLevelList" })
@Html.ValidationMessageFor(model => model.AcademicLevel)
</div>
<div class="row">
@Html.LabelFor(model => model.NumberOfPages, "Number of Pages/Words:")
@Html.DropDownListFor(model => model.NumberOfPages, (SelectList)ViewBag.numberOfPages, "--Select--", new { id = "numberOfPagesList" })
@Html.ValidationMessageFor(model => model.NumberOfPages)
</div>
<div class="row">
@Html.LabelFor(model => model.NumberOfSources, "Number of Sources:")
@Html.DropDownListFor(model => model.NumberOfSources, (SelectList)ViewBag.numberOfSources, "--Select--", new { id = "numberOfSourcesList" })
@Html.ValidationMessageFor(model => model.NumberOfSources)
</div>
<div class="row">
@Html.LabelFor(model => model.Urgency, "Urgency:")
@Html.DropDownListFor(model => model.Urgency, (SelectList)ViewBag.urgency, "--Select--", new { id = "urgencyList" })
@Html.ValidationMessageFor(model => model.Urgency)
</div>
<div class="row">
@Html.LabelFor(model => model.Spacing, "Spacing:")
@Html.RadioButtonFor(m => m.Spacing, "Double", new { @class = "spacing", id = "double", @Checked = "checked" }) Double
@Html.RadioButtonFor(m => m.Spacing, "Single", new { @class = "spacing", id = "single" }) Single
@Html.ValidationMessageFor(model => model.Spacing)
</div>
<div class="row">
@Html.LabelFor(model => model.Requirements, "Requirements:")
@Html.TextAreaFor(model => model.Requirements)
@Html.ValidationMessageFor(model => model.Requirements)
</div>
<div class="row">
@Html.DropDownListFor(model => model.Currency, (SelectList)ViewBag.currency, null, new { id = "currencyList" })
<h2 id="priceLabel">
@Html.DisplayFor(model => model.Price)
</h2>
@Html.HiddenFor(model => model.UnFormattedPrice)
<input type="submit" value="Submit" />
<input type="reset" value="Reset" />
</div>
}
型号
namespace HomeworkHelpers.Models
{
public class Order
{
public int ID { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[EmailAddress(ErrorMessage = "A Valid Email Address is Required.")]
[Required(ErrorMessage = "Email Address is Required.")]
public string Email { get; set; }
[Phone(ErrorMessage = "A Valid Phone Number is Required.")]
[Required(ErrorMessage = "Phone Number is Required.")]
public string PhoneNumber { get; set; }
[Required(ErrorMessage = "Subject is Required.")]
public string Subject { get; set; }
[Required(ErrorMessage = "Topic is Required.")]
public string Topic { get; set; }
[Required(ErrorMessage = "Document Type is Required.")]
public string DocumentType { get; set; }
[Required(ErrorMessage = "Urgency is Required.")]
public string Urgency { get; set; }
[Required(ErrorMessage = "Number of Pages is Required.")]
public Int16 NumberOfPages { get; set; }
[Required(ErrorMessage = "Requirements are Required.")]
[DataType(DataType.MultilineText)]
[StringLength(200)]
public string Requirements { get; set; }
[Required(ErrorMessage = "Writing Style is Required.")]
public string Style { get; set; }
[Required(ErrorMessage = "Spacing is Required.")]
public string Spacing { get; set; }
[Required(ErrorMessage = "Academic Level is Required.")]
public string AcademicLevel { get; set; }
[Required(ErrorMessage = "Number of Sources is Required.")]
public Int16 NumberOfSources { get; set; }
[Required(ErrorMessage = "Price is Required.")]
[Range(0.01, 10000.00, ErrorMessage = "Your quote is not complete because you haven't completed all of the steps.")]
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C}")]
public decimal Price { get; set; }
public string UnFormattedPrice { get; set; }
[Required(ErrorMessage = "Currency is Required.")]
public string Currency { get; set; }
public string PaymentID { get; set; }
public string PayerID { get; set; }
// current properties
public bool Buy { get; set; }
}
public class OrderDBContext : DbContext
{
public DbSet<Order> Orders { get; set; }
}
}
最佳答案
在模型验证成功时将 ViewBag.Buy 属性值设置为 true 并返回 View :
[HttpPost]
public ActionResult Contact(Project.Models.Order c)
{
decimal price = 0;
if (ModelState.IsValid)
{
try
{
ViewBag.Buy = true;
return View("Index", c)
}
catch (Exception)
{
return View("Error");
}
}
return View("Index");
}
在索引页末尾添加此 Java 脚本代码:
@if (ViewBag.Buy != null && ViewBag.Buy == true)
{
<script>
$(document).ready(function () {
buy();
});
</script>
}
关于javascript - modeldata有效后运行javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27099506/
我遇到了一个奇怪的问题。我有这个: $(document).ready(function () {
我正在编写一个程序,它从列表中读取一些 ID,从中找出不同的 URL,然后将图像保存到我的 C: 驱动器中。 如果我在浏览器中导航到图像 URL,它们就会起作用。此外,如果我尝试从不同的服务器获取图像
我编写了一个 REST WCF RIA Silverlight 4.0 兼容服务,我可以从 javascript + jQuery.1.4.2.js + JSON2.js(当然,还可以从 .NET 4
我很确定这个网站实际上还没有得到回答。一劳永逸地,与 32 位有符号整数范围内的数字字符串匹配的最小正则表达式是什么,范围是 -2147483648至 2147483647 . 我必须使用正则表达式进
我有两个data.table;我想从那些与键匹配的元素中随机分配一个元素。我现在这样做的方式相当慢。 让我们具体点;这是一些示例数据: dt1<-data.table(id=sample(letter
我已经安装了 celery 、RabitMQ 和花。我可以浏览到花港。我有以下简单的工作人员,我可以将其附加到 celery 并从 python 程序调用: # -*- coding: utf-8 -
我正在使用 ScalaCheck 在 ScalaTest 中进行一些基于属性的测试。假设我想测试一个函数,f(x: Double): Double仅针对 x >= 0.0 定义的, 并返回 NaN对于
我想检查文件是否具有有效的 IMAGE_DOS_SIGNATURE (MZ) function isMZ(FileName : String) : boolean; var Signature: W
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我在工作中查看了一些代码,发现了一些我以前没有遇到过的东西: for (; ;) { // Some code here break; } 我们一直调用包含这个的函数,我最近才进去看看它是
在 Herbert Schildt 的“Java:完整引用,第 9 版”中,有一个让我有点困惑的例子。它的关键点我无法理解可以概括为以下代码: class Test { public stat
我试图编写一个函数,获取 2D 点矩阵和概率 p 并以概率 p 更改或交换每个点坐标 所以我问了一个question我试图使用二进制序列作为特定矩阵 swap_matrix=[[0,1],[1,0]]
这个问题在这里已经有了答案: Using / or \\ for folder paths in C# (5 个答案) 关闭 7 年前。 我在某个Class1中有这个功能: public v
PostgreSQL 10.4 我有一张 table : Column | Type ------------------------- id | integer| title
我正在 Postgresql 中编写一个函数,它将返回一些针对特定时区(输入)计算的指标。 示例结果: 主要问题是这只是一个指标。我需要从其他表中获取其他 9 个指标。 对于实现此目标的更简洁的方法有
我需要在 python 中模拟超几何分布(用于不替换采样元素的花哨词)。 设置:有一个装满人口许多弹珠的袋子。弹珠有两种类型,红色和绿色(在以下实现中,弹珠表示为 True 和 False)。从袋子中
我正在使用 MaterializeCSS 框架并动态填充文本输入。我遇到的一个问题是,在我关注该字段之前,valid 和 invalid css 类不会添加到我的字段中。 即使我调用 M.update
是否有重叠 2 个 div 的有效方法。 我有以下内容,但无法让它们重叠。 #top-border{width:100%; height:60px; background:url(image.jpg)
我希望你们中的一位能向我解释为什么编译器要求我在编译单元中重新定义一个静态固定长度数组,尽管我已经在头文件中这样做了。这是一个例子: 我的类.h: #ifndef MYCLASS_H #define
我正在使用旧线程发布试图解决相同问题的新代码。什么是安全 pickle ? this? socks .py from socket import socket from socket import A
我是一名优秀的程序员,十分优秀!