将输入类型连接到模型并在asp net中为它们分配一个值[重复]
Posted
技术标签:
【中文标题】将输入类型连接到模型并在asp net中为它们分配一个值[重复]【英文标题】:connect input type to model and assign them a value in asp net [duplicate] 【发布时间】:2021-10-09 11:45:13 【问题描述】:我正在尝试将值添加到交叉表中,其中车库的 ID 和基于选择列表的值被插入到数据库中。该列表在视图中如下所示:
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<label class="ab">Claim</label>
<input type="checkbox" class="checkbclass" name="Claim" id="Claim" placeholder="Claim" required="" />
</div>
</div>
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<label class="ab">Scheduled Service</label>
<input type="checkbox" class="checkbclass" name="Scheduled" id="Scheduled" placeholder="Scheduled" required="" />
</div>
</div>
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<label class="ab">Tires</label>
<input type="checkbox" class="checkbclass" name="Tires" id="Tires" placeholder="Tires" required="" />
</div>
</div>
因此视图中显示了 3 个复选框。在这里,用户应该在编辑车库时选择一个或多个选项。交叉表如下所示:
[ID]
,[GarageID]
,[RequestProperty]
,[CreatedDate]
,[CreatedBy]
,[UpdatedDate]
,[UpdatedBy]
我想在 SQL 存储过程中做类似的事情:
INSERT INTO GarageCrossRequestType
(GarageID, RequestProperty)
VALUES (@GarageID, @RequestType)
这可能类似于:
var cmd1 = new SqlCommand("spGarageGetRequestTypes", Connection);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@GarageId", model.GarageId);
cmd1.Parameters.AddWithValue("@RequestType", model.requestId);
int result = cmd1.ExecuteNonQuery();
if (result == 1)
valid = true;
在方法中。 (插入garageID
和RequestTypeID
。)
请求类型可以如下:
public int Claim get; set; = 1;
public int ScheduledService get; set; = 2;
public int Tires get; set; = 3;
例如,如果用户选择声明,我想用GarageID
和Claim
更新表格 -> 其中ID
将是1。我对使用视图有点陌生,所以我不确定如何将输入类型连接到模型。所以问题如下:
-
将输入类型连接到模型,为其提供正确的值(例如,Claim -> 1、Scheduled -> 2 等等),并且,
我的数据库表只接受
garageId
和requestType
,因此在发送例如garageId: 4
时,我需要输入类型Claim 或选择任何复选框来仅发送它们的值(1、2 或3)到数据库。
有人对此有解决方案吗?我也希望这是有道理的,否则请告诉我,我会尝试以不同的方式表述它。
更新:
所以我应该从一开始就解释得更好。但这是其余的代码。所以基本上,有一个功能,用户可以编辑车库,我想让他们也可以选择索赔/服务或轮胎。所以我想扩展这个方法,当用户选择一个车库时,他们也可以选择索赔等等(garageId
也来自这个方法)。
在视图中(用于编辑车库):
<div class="form-group">
<div class="row">
<label class="col-xs-2 control-label">Garage</label>
<input type="text" class="col-lg-10 form-control" name="GarageName" id="GarageName" placeholder="Name" required="" />
</div>
</div>
<div class="form-group">
<div class="row">
<label class="col-xs-2 control-label">Contact person</label>
<input type="text" class="col-lg-10 form-control" name="ContactPerson" id="ContactPerson" placeholder="ContactPerson" required="" />
</div>
</div>
<div class="form-group">
<div class="row">
<label class="col-xs-2 control-label">Email</label>
<input type="email" class="col-lg-10 form-control" name="Email" id="Email" placeholder="Email" required="" onblur="validateEmail(this.value);" /><p id="InvalidMeg" style="font-size: 25px; color: red">Invalid e-mail address</p>
</div>
</div>
<button class="btn btn-md btn-primary custom" type="submit" id="saveNewGarageBtn"><i class="glyphicon glyphicon-lock"></i> Save</button>
<button class="btn btn-md btn-primary custom" type="submit" id="EditGarageBtn"><i class="glyphicon glyphicon-lock"></i> Save edit</button>
function editGarage(e)
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var garageId = dataItem.GarageId;
countryId = dataItem.CountryId;
name = dataItem.Name;
var contactperson = dataItem.ContactPerson;
var email = dataItem.Email;
if (garageId != 0)
$("#EditGarageBtn").show();
$("#saveNewGarageBtn").hide();
$("#GarageName").val(name);
$("#Country").val(countryId);
$("#ContactPerson").val(contactperson);
$("#Email").val(email);
$("#garageId").val(garageId);
Edit-garage button:
$("#EditGarageBtn").click(function ()
var customerNumber = customerNumberOfEditingGarage;
name = $("#GarageName").val();
countryId = $("#Country").val();
var garageId = $("#garageId").val();
var contactperson = $("#ContactPerson").val();
var email = $("#Email").val();
$("#EditGarageBtn").hide();
if (countryId == "Norway")
countryId = 2;
if (countryId == "Finland")
countryId = 4;
if (name.length > 0 && email.length > 0 && phone.length > 0 && contactperson.length > 0)
$.ajax(
url: '@Url.Action("EditGarage", "Garage")',
dataType: 'JSON',
data:
name: name, countryId: countryId, garageId: garageId,
contactperson: contactperson,
phone: phone, email: email
,
success: function (data)
if (data == "Failure")
toastr["error"]("Error editing Garage");
else
toastr["success"]("Garage successfully updated");
customerNumberOfEditingGarage = null;
refreshGrid();
,
error: function ()
);
else
toastr["error"]("Error editing Garage");
);
方法:
public bool EditGarage(GarageModel model)
var valid = false;
var cmd = new SqlCommand("spGarageEditGarage", Connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@GarageId", model.GarageId);
cmd.Parameters.AddWithValue("@CountryId", model.CountryId);
cmd.Parameters.AddWithValue("@ContactPerson", model.ContactPerson);
cmd.Parameters.AddWithValue("@Email", model.Email);
try
int result = cmd.ExecuteNonQuery();
if (result == 1)
valid = true;
catch (SqlException ex)
throw new Exception(ex.Message);
finally
Connection.Close();
return valid;
希望这变得更清楚了。
【问题讨论】:
【参考方案1】:我不知道你的模型是什么以及model.GarageId
来自哪里。如果你完成了我没看懂的部分,可以使用model.requestId
下面的代码。
注意:使用radiobutton
而不是checkbox
。
将视图更改为:
@using (html.BeginForm("YourAction", "YourController", FormMethod.Post))
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<input type="radio" id="Claim" name="requestType" value="Claim">
<label for="Claim">Claim</label>
< </div>
</div>
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<input type="radio" id="ScheduledService" name="requestType" value="ScheduledService">
<label for="ScheduledService">ScheduledService</label>
</div>
</div>
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<input type="radio" id="Tires" name="requestType" value="Tires">
<label for="Tires">Tires</label>
</div>
</div>
<div class='form-group' style="margin-left: 60%;">
<div class="row">
<input type="submit" value="Submit"/>
</div>
</div>
</div>
添加枚举
public enum RequestType
Claim = 1,
ScheduledService = 2,
Tires = 3
在你的行动中
public ActionResult YourAction(RequestType requestType)
//......................................
model.GarageId = //your value
switch (requestType)
case RequestType.Claim:
model.requestId = (int)RequestType.Claim;
break;
case RequestType.ScheduledService:
model.requestId = (int)RequestType.ScheduledService;
break;
case RequestType.Tires:
model.requestId = (int)RequestType.Tires;
break;
//get insert........................
【讨论】:
如果您想了解有关代码的更多信息,我已经发布了更新!但是谢谢你,我会试试这个以上是关于将输入类型连接到模型并在asp net中为它们分配一个值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 asp.net core 3.1 中为每种类型的请求启用 Cors
将 asp.net web 表单连接到 ms access 数据库