我的提交表单从我的剃刀文件到控制器,然后从控制器到我的远程数据库。但现在我甚至认为控制器类没有被调用。
以下是我的观点:
<form>
<input type="text" name="firstName" value="The first name">
<input type="text" name="lastName" value="The last name">
<input type="email" name="emailAddress" value="email@example.com">
<br>
<input type="submit" value="Submit">
</form>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
用我的模特:
@model InputEvent
@using (Html.BeginForm("Save", "Portal/Controllers/MyEvent"))
{
<md-input-container class="md-block" flex-gt-xs="">
<label>Title</label>
@Html.TextBoxFor(m => m.title)
</md-input-container>
<md-input-container class="md-block">
<label>Address</label>
@Html.TextBoxFor(m => m.address)
</md-input-container>
<md-button class="md-raised">
<input type="submit" value="Save" />
</md-button>
}
我的控制器与数据库连接:
public class InputEvent
{
public string title;
public string address;
}
我没有正确调用我的控制器吗?或者我的sql命令无效?
编辑:我刚刚在一小时后再次检查了我的数据库,我有多行,其中包含“test_title”和“test_address”。我想我的代码可以工作,但是它非常延迟。这可能不是最好的问题,但是有没有人知道为什么它会如此延迟插入数据库呢?
答案 0 :(得分:0)
添加self.profile.videoconfavailability.wday == Date.today.wday &&
self.profile.videoconfavailability.time >= Time.now + (60*60) &&
Date.today.wday &&
self.profile.videoconfavailability.time > Time.now
作为第三个参数...您的操作方法是编写帖子而不是获取。
FormMethod.Post
答案 1 :(得分:0)
确保服务器端代码与下面的代码类似。请注意[HttpPost]
属性。虽然客户端表单的默认值为Post,但HttpGet
是服务器端的默认值。因此,您必须明确表示您希望在服务器端使用HttpPost
。执行以下步骤。注意Save
方法有两个重载,一个有HttpGet
,另一个有HttpPost
。完成后,使用HttpPost
属性在方法上设置断点并发布表单。你会看到模型会被水化。
第1步
@using (Html.BeginForm("Save", "MyEvent", FormMethod.Post))
{
<md-input-container class="md-block" flex-gt-xs="">
<label>Title</label>
@Html.TextBoxFor(m => m.title)
</md-input-container>
<md-input-container class="md-block">
<label>Address</label>
@Html.TextBoxFor(m => m.address)
</md-input-container>
<md-button class="md-raised">
<input type="submit" value="Save" />
</md-button>
}
第2步
public class MyEventController : Controller
{
[HttpPost]
public ActionResult Save(InputEvent model)
{
// Consider refining the implementation to use Stored Procedures or an ORM e.g. Entity Framework.
// It helps secure your app. Application security advice.
MySqlConnection conn = new MySqlConnection("mydbstring");
conn.Open();
MySql.Data.MySqlClient.MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "INSERT INTO event(title, address) VALUES(" + model.title + "," + model.address + ")";
comm.ExecuteNonQuery();
conn.Close();
return View();
}
[HttpGet]
public ActionResult Save()
{
return View();
}
}
答案 2 :(得分:0)
我看到你的代码现在正在运行。但是,您不应该按照自己的方式从POST方法返回视图。您应该使用PRG模式。阅读该链接,以便了解代码可能导致的问题。我知道这是针对MVC 4的,但无论MVC的版本如何,模式都是一样的。