标签: parameterbinding

WebApi使用GetAll()和GetByIds(int [] ids)找到多个操作

使用标准路线:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

通过这些行动:

public class ValuesController : ApiController
{
    // GET api/values
    public string GetAll()
    {
        return "all";
    }

    // GET api/values/5
    public string GetById(int id)
    {
        return "single";
    }

    // GET api/values?ids=1&ids=2
    public string GetByIds([FromUri] int[] ids)
    {
        return "multiple";
    }
Run Code Online (Sandbox Code Playgroud)

并向/ api/values发出请求,我得到以下异常:

Multiple actions were found that match the request: 
System.String GetAll() on type MvcApplication4.Controllers.ValuesController
System.String GetByIds(Int32[]) on type MvcApplication4.Controllers.ValuesController
Run Code Online (Sandbox Code Playgroud)

我一直在试着寻找解决方案.我相信GetAllGetByIds …

c# parameterbinding asp.net-web-api asp.net-web-api-routing

8
推荐指数
1
解决办法
3234
查看次数

web api模型绑定到接口

我正在尝试将控制器操作绑定到接口,但仍然保持默认绑定行为.

public class CoolClass : ISomeInterface
{
    public DoSomething {get;set;} // ISomeInterface
}

public class DosomethingController : ApiController
{
    public HttpResponseMessage Post(ISomeInterface model)
    {
        // do something with model which should be an instance of CoolClass
    }
} 
Run Code Online (Sandbox Code Playgroud)

我的服务的消费者对CoolClass一无所知,所以让他们为他们正在传递的Json添加"$ type"在我看来是个黑客.我希望能够在服务中处理它.如果我将CoolClass指定为动作参数,它可以正常工作.

编辑:所以我发现我的问题的部分解决方案在这里为ASP.NET Web API操作方法参数的依赖注入,但有一个后续问题.该解决方案无法解析接口属性.请参阅下面的示例.

IConcreteClass将被解析,但ISubtype不会.

public class SubConcreteClass : ISubtype
{
    // properties
}

public class ConcreteClass : IConcreteClass
{
    public ISubtype Subtype {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

一旦媒体格式化程序看到它可以解析IConcreteClass中的类型,它就会读取整个流.所以我猜我没有机会解决界面成员.

c# asp.net-mvc parameterbinding asp.net-web-api

8
推荐指数
1
解决办法
1万
查看次数

在DataFormWebPart中动态设置ParameterBinding的DefaultValue

在我在WSS中的自定义aspx页面中,我使用带有xsl文件的DataFormWebPart来呈现一些数据.为了将值传递给xsl,我使用参数绑定.具体来说,我需要传递服务器主机URL,如下所示:

<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue="http://hardcoded.com" />
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我要做的下一件事是动态获取主机名.因此,弄清楚如何从SharePoint获取它我添加了以下绑定:

<ParameterBinding 
    Name="HttpHost" 
    Location="CAMLVariable" 
    DefaultValue='<%# SPContext.Current.Site.Url.Replace
       (SPContext.Current.Site.ServerRelativeUrl, "") %>' />
Run Code Online (Sandbox Code Playgroud)

现在来问题了.如果在页面中使用其他位置,代码将按预期工作,但使用上述代码SharePoint报告:

Web部件错误:'WebPartPages:DataFormWebPart'的'ParameterBindings'属性不允许子对象.

有人对此有所了解吗?

更新:我已根据本文启用了服务器端代码

asp.net sharepoint dataformwebpart parameterbinding

6
推荐指数
1
解决办法
1万
查看次数

WebApi2:自定义参数绑定以绑定部分参数

我有一个webApi2项目和另一个项目,其中我有我的Model类和BaseModel,它是所有模型的基础,如下所示,

public class BaseModel
{
    public string UserId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

所有其他模型都是从我的BaseModel派生的.

在webapi我有我的CustomerController如下,

public class CustomerController : ApiController
{
    [HttpPost]
    public GetCustomerResponseModel Get(GetCustomerRequestModel requestModel)
    {
        var response = new GetCustomerResponseModel();

        //I need only the UserId coming from the BaseModel is binded from request headers
        var userId = requestModel.UserId;

        //I want all model data except UserId is binded with default model binding
        var customerData = requestModel.CustomerData;
        var someOtherData = requestModel.SomeOtherData;

        return response;
    }

    [HttpPost]
    public AddStockAlertResponseModel AddStockAlert(AddStockAlertRequestModel requestModel)
    { …
Run Code Online (Sandbox Code Playgroud)

model-binding parameterbinding custom-model-binder asp.net-web-api asp.net-web-api2

6
推荐指数
1
解决办法
2377
查看次数

PowerShell中的参数绑定问题

我有这个PowerShell cmdlet:

function Test-ParameterBinding {
    #
    # .SYNOPSIS
    # Tests parameter binding.
    #
    [CmdletBinding()]
    param (    

        [Parameter(ParameterSetName = 's1', Mandatory = $true)]
        [int] $P1,

        [Parameter(ParameterSetName = 's1')]
        [Parameter(ParameterSetName = 's2', Mandatory = $true)]
        [string] $P2,

        [Parameter(ParameterSetName = 's1')]
        [Parameter(ParameterSetName = 's3', Mandatory = $true)]
        [bool] $P3
    )
    process { $PSCmdlet }
}
Run Code Online (Sandbox Code Playgroud)

以下是此cmdlet的帮助:

SYNTAX
    Test-ParameterBinding -P1 <Int32> [-P2 <String>] [-P3 <Boolean>] [<Com…

    Test-ParameterBinding -P2 <String> [<CommonParameters>]

    Test-ParameterBinding -P3 <Boolean> [<CommonParameters>]
Run Code Online (Sandbox Code Playgroud)

查看代码和帮助我认为我可以像这样使用cmdlet:

Test-ParameterBinding -P2 'Bind to param set s2'
Test-ParameterBinding -P3 …
Run Code Online (Sandbox Code Playgroud)

powershell parameterbinding

5
推荐指数
1
解决办法
4619
查看次数

Mysqli参数绑定问题

我需要额外的一双眼睛.任何帮助将不胜感激.这是一个非常简单的搜索查询,但无论出于何种原因,我找不到该错误.好吧,我知道bug在哪里.我只是无法超越它.无论如何.....

我从POST变量中获取搜索值,设置该变量,然后按如下方式设置列变量...

$term = "'%".$_POST['searchTerm']."%'";
$field = "columnName";
Run Code Online (Sandbox Code Playgroud)

当我回应这些时,它们会完美地出现.因此,如果我在表单中键入"a",我将回显'%a%'和columnName.

然后我准备查询并绑定参数如下...

$suquery=$dbCon->prepare("select * from Table where ? LIKE ?");
$suquery->bind_param('ss', $field, $term);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

结果总是返回0行.我发现,当我玩这个时,没有绑定参数正常工作,即使它应该如此回应.例如,当我更改查询以便列被硬编码并且仅绑定搜索项时....

$suquery=$dbCon->prepare("select * from Table where columnName LIKE ?");
$suquery->bind_param('s', $term);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

我仍然得到零返回的行.这告诉我,即使$ field回声为'%a%',某些东西仍然没有关闭.我真的很茫然.同样,当我硬连接搜索词并绑定列时......

$suquery=$dbCon->prepare("select * from Table where ? LIKE '%a%'");
$suquery->bind_param('s', $field);
$suquery->execute();
Run Code Online (Sandbox Code Playgroud)

我得到了太多的行返回.它实际上从表中拉出行,其中任何列中的值包含字母"a".因此,列或术语都没有正确绑定.劳动节!

php mysql mysqli parameterbinding sql-like

4
推荐指数
1
解决办法
2987
查看次数

游标中的 PL/SQL 变量是否与绑定参数有效相同?

我听说使用绑定变量(可以)更有效,因为对于具有不同绑定值的后续调用,查询本身仍然相同,因此不再需要对其进行解析。

我理解为什么固定值会出现这种情况。在下面的游标中,该值固定为 1。如果我有一个相同的不同游标,除了 1 变为 2,这是一个不同的查询。清到此为止。

declare
  cursor C_CURSOR is 
    select * from TESTTABLE pt where pt.ID = 1;
Run Code Online (Sandbox Code Playgroud)

但我想知道在游标内使用 PL/SQL 变量时是否也是这种情况。它们是否被扩展为一个固定值,或者它们是否被解释为绑定变量。

我已经进行了广泛的搜索,但到处都可以找到有关文字的示例,如上述情况,但没有明确解释 PL/SQL 变量的使用。

换句话说,在下面的两个片段中,第二个可能更有效,还是它们本质上相同?

直接在游标中使用 PL/SQL 变量:

declare
  V_TEST integer := 1;

  cursor C_CURSOR is 
    select * 
    from 
      TESTTABLE pt
    where
      pt.ID = V_TEST;

begin
  for r in C_CURSOR loop
    null;
  end loop;
end;
Run Code Online (Sandbox Code Playgroud)

使用绑定变量:

declare
  V_TEST int := 1;

  cursor C_CURSOR(B_TEST int) is 
    select * 
    from 
      TESTTABLE pt
    where
      pt.ID = B_TEST;

begin
  for r …
Run Code Online (Sandbox Code Playgroud)

oracle plsql cursor parameterbinding bind-variables

4
推荐指数
1
解决办法
6386
查看次数

Get-Service参数绑定未按预期工作

我正在学习PowerShell并且对参数绑定有疑问.这可能是一个简单的问题,但我很茫然.

如果我输入:

get-adcomputer -filter 'name -eq "serverone"' |
  select @{name='computername';e={$_.name}} |
  get-process
Run Code Online (Sandbox Code Playgroud)

这给了我一个关于"serverone"的进程列表,并且运行正常.但如果我输入:

get-adcomputer -filter 'name -eq "serverone"' |
  select @{name='computername';e={$_.name}} |
  get-service
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

get-service : Cannot find any service with service name
'@{computername=SERVERONE}'. At line:1 char:93
+ ... e={$_.name}} | get-service
+                    ~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (@{computername=SERVERONE}:String) [Get-Service], ServiceCommandException
    + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
Run Code Online (Sandbox Code Playgroud)

为什么是这样?双方Get-ProcessGet-Service接受计算机名,以及该参数的帮助文件看起来相同.有趣的是,如果我键入相同的代码但添加-Name bitsGet-Service上面的命令,它会返回服务详细信息.所以它看起来像是Get-Service试图将对象绑定到服务名称,但是这种情况Get-Process在语法上看起来非常相似?

powershell parameterbinding

4
推荐指数
1
解决办法
796
查看次数

Laravel查询构建器参数绑定

我正在尝试将相同的值绑定到原始查询中的某个参数(Laravel 5.2)

//this is a non practical example ,only for clarify the question

DB::table('users as u')
->select('id')
->whereRaw('u.id > ? or u.id < ? or u.id = ?',[2,2,2])
->first();
Run Code Online (Sandbox Code Playgroud)

有没有办法一次绑定相同的参数(防止重复[2,2,2]中的值)?

php binding parameterbinding laravel

4
推荐指数
1
解决办法
9776
查看次数

将参数绑定到Db :: raw laravel查询

我有以下原始查询:

$results = Db::select( Db::raw("SELECT HOUR(created_at) as hour, COUNT(*) as count
                       FROM `visited`
                       WHERE created_at >= DATE_SUB(NOW(),INTERVAL 16 DAY)
                       GROUP BY HOUR(created_at)") );
Run Code Online (Sandbox Code Playgroud)

我需要参数化日间隔,所以我尝试了这个:

$days = 16;
$results = Db::select( Db::raw("SELECT HOUR(created_at) as hour, COUNT(*) as count
                       FROM `visited`
                       WHERE created_at >= DATE_SUB(NOW(),INTERVAL :days DAY)
                       GROUP BY HOUR(created_at)", ["days" => $days]) );
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

"SQLSTATE [HY000]:一般错误:2031

显然绑定不起作用.我究竟做错了什么?

php mysql parameterbinding laravel octobercms

4
推荐指数
1
解决办法
8368
查看次数

jdbc PreparedStatement中的问号问题

我来回上网,找不到解决我问题的方法。我正在尝试使用与jdbc的参数绑定来查询mysql表,但是它在我的语句中始终报告问号的语法错误。

这是我的课:

    package todoList_;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.HashMap;

    public class testBinding {

        // JDBC driver name and database URL
        static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        static final String DB_URL = "jdbc:mysql://localhost/TODO?useJvmCharsetConverters=true";

        // Database credentials
        static final String USER = "root";
        static final String PASS = "root";

        public static void main(String args[]) {
            // TODO Auto-generated method stub
            Connection conn = null;
            Statement stmt = null;
            HashMap<Integer, String> list = new …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc prepared-statement parameterbinding

3
推荐指数
1
解决办法
1379
查看次数

Laravel:“on 子句”中的未知列 $parameter

我在 Laravel 中的 DB 查询和参数绑定中使用参数时遇到问题。

我收到此错误:

Error: "Column not found: 1054 Unknown column '3' in 'on clause'"
Run Code Online (Sandbox Code Playgroud)

这是查询的一部分:

->join('foo AS f1', function($join) use ($bar)
      {
           $join->on('f1.foo', '=', 'f2.foo')
                ->on('f1.bar', '=', $bar);
      })
Run Code Online (Sandbox Code Playgroud)

如果我这样做,它会起作用:

->on('f1.bar', '=', DB::raw($bar));
Run Code Online (Sandbox Code Playgroud)

解决这个问题的方法是什么?当然,我也想为此使用参数绑定。但是,当我这样做时:

->on('f1.bar', '=', ':bar', ['bar' => $bar]);
Run Code Online (Sandbox Code Playgroud)

我明白了:

ErrorException in Grammar.php line 196:
Array to string conversion
Run Code Online (Sandbox Code Playgroud)

php mysql database parameterbinding laravel

3
推荐指数
1
解决办法
1488
查看次数