我正在MVC中构建一个视图,我在其中选择连接到sqlserver的组合框,选择值并将其发送到控制器中的方法,但选择该值并不会显示与所选对应的数据表值。
代码:我的方法查询和方法的使用是下一个:
public List<Ciudades> GetCityById(int id)
{
List<Ciudades> lct2 = new List<Ciudades>();
using (SqlCommand cmd = new SqlCommand())
{
string sql = string.Format("Select cityID,cityName from loccities where countryID={0}",id);
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = sql;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
Ciudades ct = new Ciudades();
ct.ID = Convert.ToInt32(sdr["cityID"]);
ct.Nombre = sdr["cityName"].ToString();
lct2.Add(ct);
}
return lct2;
}
}
控制器:
[HttpPost]
public JsonResult GetDataById(int id)
{
MvcSRDCBeta.Models.Ciudades obj = new MvcSRDCBeta.Models.Ciudades();
var Respuesta = var1.GetCityById(id);
return Json(Respuesta, JsonRequestBehavior.AllowGet);
}
在视图中,我有以下javascript代码,并且我遇到了$ .post行的问题(“GetDataById($ _ POST ['code'])”
<div class="form-group">
<label for="id" class="col-md-2 control-label">Prueba C4</label>
<div class="input-group">
<span class="input-group-btn">
<select class="form-control" name="optone" id="countrySel" size="1">
<option value="">Select Countries</option>
</select>
</span>
<span class="input-group-btn">
<select class="form-control" name="opttwo" id="cities" size="1">
<option value="">Selecciona cities</option>
</select>
</span>
<span class="input-group-btn">
<select class="form-control" name="optthree" id="regionSel" size="1">
<option value="" selected="selected">Please select city first</option>
</select>
</span>
</div>
</div>
我在加载页面中更改了js
function obtener_ciudades() { //Funcion para obtener los estados de cada pais
$("#countrySel").change(function () {
$("#cities option").remove();
$("#cities").append('<option value="">Selecciona Ciudades</option>');
var datos = {
//accion: "obtener_estados",
codigo: $(this).val()
}
//console.log(datos);
$.post("GetDataById($_POST['codigo'])", datos, function (datos) {
console.log(datos);
$.each(datos, function (key, value) {
$("#cities").appendChild("<option value=" + value.ID + ">" + value.Nombre + "</option>");
});
}, "json");
});
$(document).on("ready", inicio);
function inicio() { //inicializar funciones vitales para las paginas
obtener_ciudades();
}
答案 0 :(得分:0)
首先,您的地址不正确。您不需要在通话中使用$_POST['codigo']
(看起来像某种PHP代码)。您需要的地址是/ControllerName/MethodName
。只需改变
$.post("GetDataById($_POST['codigo'])", datos, function (datos) {
to(将ControllerName替换为实际控制器名称):
$.post("/ControllerName/GetDataById", datos, function (datos) {
接下来,由于您的方法GetDataById
需要名为Id的单个参数,因此您需要提供一个具有属性ID的对象,例如。
$.post("/ControllerName/GetDataById", { id: $(this).val() }, function (datos) {